mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-11 15:21:51 +00:00
- enable shader-less rendering. Still very incomplete, but at least the basics are working.
This commit is contained in:
parent
3b1500438d
commit
eb27057853
5 changed files with 69 additions and 26 deletions
|
@ -110,20 +110,29 @@ FFlatVertexBuffer::~FFlatVertexBuffer()
|
||||||
void FFlatVertexBuffer::BindVBO()
|
void FFlatVertexBuffer::BindVBO()
|
||||||
{
|
{
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, vbo_id);
|
glBindBuffer(GL_ARRAY_BUFFER, vbo_id);
|
||||||
if (vbo_id != 0) // set this up only if there is an actual buffer.
|
if (gl.glslversion > 0)
|
||||||
{
|
{
|
||||||
glVertexAttribPointer(VATTR_VERTEX, 3, GL_FLOAT, false, sizeof(FFlatVertex), &VTO->x);
|
if (vbo_id != 0) // set this up only if there is an actual buffer.
|
||||||
glVertexAttribPointer(VATTR_TEXCOORD, 2, GL_FLOAT, false, sizeof(FFlatVertex), &VTO->u);
|
{
|
||||||
glEnableVertexAttribArray(VATTR_VERTEX);
|
glVertexAttribPointer(VATTR_VERTEX, 3, GL_FLOAT, false, sizeof(FFlatVertex), &VTO->x);
|
||||||
glEnableVertexAttribArray(VATTR_TEXCOORD);
|
glVertexAttribPointer(VATTR_TEXCOORD, 2, GL_FLOAT, false, sizeof(FFlatVertex), &VTO->u);
|
||||||
|
glEnableVertexAttribArray(VATTR_VERTEX);
|
||||||
|
glEnableVertexAttribArray(VATTR_TEXCOORD);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
glDisableVertexAttribArray(VATTR_VERTEX);
|
||||||
|
glDisableVertexAttribArray(VATTR_TEXCOORD);
|
||||||
|
}
|
||||||
|
glDisableVertexAttribArray(VATTR_COLOR);
|
||||||
|
glDisableVertexAttribArray(VATTR_VERTEX2);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
glDisableVertexAttribArray(VATTR_VERTEX);
|
glDisableClientState(GL_VERTEX_ARRAY);
|
||||||
glDisableVertexAttribArray(VATTR_TEXCOORD);
|
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||||
|
glDisableClientState(GL_COLOR_ARRAY);
|
||||||
}
|
}
|
||||||
glDisableVertexAttribArray(VATTR_COLOR);
|
|
||||||
glDisableVertexAttribArray(VATTR_VERTEX2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
|
|
@ -134,10 +134,19 @@ void FModelVertexBuffer::BindVBO()
|
||||||
{
|
{
|
||||||
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo_id);
|
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo_id);
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, vbo_id);
|
glBindBuffer(GL_ARRAY_BUFFER, vbo_id);
|
||||||
glEnableVertexAttribArray(VATTR_VERTEX);
|
if (gl.glslversion > 0)
|
||||||
glEnableVertexAttribArray(VATTR_TEXCOORD);
|
{
|
||||||
glEnableVertexAttribArray(VATTR_VERTEX2);
|
glEnableVertexAttribArray(VATTR_VERTEX);
|
||||||
glDisableVertexAttribArray(VATTR_COLOR);
|
glEnableVertexAttribArray(VATTR_TEXCOORD);
|
||||||
|
glEnableVertexAttribArray(VATTR_VERTEX2);
|
||||||
|
glDisableVertexAttribArray(VATTR_COLOR);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
glEnableClientState(GL_VERTEX_ARRAY);
|
||||||
|
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||||
|
glDisableClientState(GL_COLOR_ARRAY);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
@ -222,9 +231,18 @@ void FModelVertexBuffer::UnlockIndexBuffer()
|
||||||
unsigned int FModelVertexBuffer::SetupFrame(unsigned int frame1, unsigned int frame2)
|
unsigned int FModelVertexBuffer::SetupFrame(unsigned int frame1, unsigned int frame2)
|
||||||
{
|
{
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, vbo_id);
|
glBindBuffer(GL_ARRAY_BUFFER, vbo_id);
|
||||||
glVertexAttribPointer(VATTR_VERTEX, 3, GL_FLOAT, false, sizeof(FModelVertex), &VMO[frame1].x);
|
if (gl.glslversion > 0)
|
||||||
glVertexAttribPointer(VATTR_TEXCOORD, 2, GL_FLOAT, false, sizeof(FModelVertex), &VMO[frame1].u);
|
{
|
||||||
glVertexAttribPointer(VATTR_VERTEX2, 3, GL_FLOAT, false, sizeof(FModelVertex), &VMO[frame2].x);
|
glVertexAttribPointer(VATTR_VERTEX, 3, GL_FLOAT, false, sizeof(FModelVertex), &VMO[frame1].x);
|
||||||
|
glVertexAttribPointer(VATTR_TEXCOORD, 2, GL_FLOAT, false, sizeof(FModelVertex), &VMO[frame1].u);
|
||||||
|
glVertexAttribPointer(VATTR_VERTEX2, 3, GL_FLOAT, false, sizeof(FModelVertex), &VMO[frame2].x);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// only used for single frame models so there is no vertex2 here, which has no use without a shader.
|
||||||
|
glVertexPointer(3, GL_FLOAT, sizeof(FModelVertex), &VMO[frame1].x);
|
||||||
|
glTexCoordPointer(2, GL_FLOAT, sizeof(FModelVertex), &VMO[frame1].u);
|
||||||
|
}
|
||||||
return frame1;
|
return frame1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -316,9 +316,12 @@ void FRenderState::ApplyMatrices()
|
||||||
|
|
||||||
void FRenderState::ApplyLightIndex(int index)
|
void FRenderState::ApplyLightIndex(int index)
|
||||||
{
|
{
|
||||||
if (index > -1 && GLRenderer->mLights->GetBufferType() == GL_UNIFORM_BUFFER)
|
if (gl.lightmethod != LM_SOFTWARE)
|
||||||
{
|
{
|
||||||
index = GLRenderer->mLights->BindUBO(index);
|
if (index > -1 && GLRenderer->mLights->GetBufferType() == GL_UNIFORM_BUFFER)
|
||||||
|
{
|
||||||
|
index = GLRenderer->mLights->BindUBO(index);
|
||||||
|
}
|
||||||
|
activeShader->muLightIndex.Set(index);
|
||||||
}
|
}
|
||||||
activeShader->muLightIndex.Set(index);
|
|
||||||
}
|
}
|
|
@ -87,13 +87,25 @@ FSkyVertexBuffer::~FSkyVertexBuffer()
|
||||||
void FSkyVertexBuffer::BindVBO()
|
void FSkyVertexBuffer::BindVBO()
|
||||||
{
|
{
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, vbo_id);
|
glBindBuffer(GL_ARRAY_BUFFER, vbo_id);
|
||||||
glVertexAttribPointer(VATTR_VERTEX, 3, GL_FLOAT, false, sizeof(FSkyVertex), &VSO->x);
|
if (gl.glslversion > 0)
|
||||||
glVertexAttribPointer(VATTR_TEXCOORD, 2, GL_FLOAT, false, sizeof(FSkyVertex), &VSO->u);
|
{
|
||||||
glVertexAttribPointer(VATTR_COLOR, 4, GL_UNSIGNED_BYTE, true, sizeof(FSkyVertex), &VSO->color);
|
glVertexAttribPointer(VATTR_VERTEX, 3, GL_FLOAT, false, sizeof(FSkyVertex), &VSO->x);
|
||||||
glEnableVertexAttribArray(VATTR_VERTEX);
|
glVertexAttribPointer(VATTR_TEXCOORD, 2, GL_FLOAT, false, sizeof(FSkyVertex), &VSO->u);
|
||||||
glEnableVertexAttribArray(VATTR_TEXCOORD);
|
glVertexAttribPointer(VATTR_COLOR, 4, GL_UNSIGNED_BYTE, true, sizeof(FSkyVertex), &VSO->color);
|
||||||
glEnableVertexAttribArray(VATTR_COLOR);
|
glEnableVertexAttribArray(VATTR_VERTEX);
|
||||||
glDisableVertexAttribArray(VATTR_VERTEX2);
|
glEnableVertexAttribArray(VATTR_TEXCOORD);
|
||||||
|
glEnableVertexAttribArray(VATTR_COLOR);
|
||||||
|
glDisableVertexAttribArray(VATTR_VERTEX2);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
glVertexPointer(3, GL_FLOAT, sizeof(FSkyVertex), &VSO->x);
|
||||||
|
glTexCoordPointer(2, GL_FLOAT, sizeof(FSkyVertex), &VSO->u);
|
||||||
|
glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(FSkyVertex), &VSO->color);
|
||||||
|
glEnableClientState(GL_VERTEX_ARRAY);
|
||||||
|
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||||
|
glEnableClientState(GL_COLOR_ARRAY);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
|
@ -162,6 +162,7 @@ void gl_LoadExtensions()
|
||||||
{
|
{
|
||||||
gl.version = 2.11f;
|
gl.version = 2.11f;
|
||||||
gl.glslversion = 0;
|
gl.glslversion = 0;
|
||||||
|
gl.lightmethod = LM_SOFTWARE;
|
||||||
}
|
}
|
||||||
else if (gl.version < 3.0f)
|
else if (gl.version < 3.0f)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue