summaryrefslogtreecommitdiff
path: root/chart2
diff options
context:
space:
mode:
authorMarkus Mohrhard <markus.mohrhard@googlemail.com>2014-08-16 00:09:02 +0200
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2014-09-02 01:08:45 +0200
commita72a10a32b1922462d43170a2a77a95c49d4fda2 (patch)
tree990080772dac95cfcd49bf28c3ea32f577b9ace9 /chart2
parent14cdc084706efbac14ee93687095055c2fdfbed2 (diff)
WIP debug statements
Diffstat (limited to 'chart2')
-rw-r--r--chart2/source/view/main/GL3DRenderer.cxx94
1 files changed, 92 insertions, 2 deletions
diff --git a/chart2/source/view/main/GL3DRenderer.cxx b/chart2/source/view/main/GL3DRenderer.cxx
index 6d0e5728aa51..417ac034d0b2 100644
--- a/chart2/source/view/main/GL3DRenderer.cxx
+++ b/chart2/source/view/main/GL3DRenderer.cxx
@@ -229,7 +229,7 @@ void OpenGL3DRenderer::CheckGLSLVersion()
void OpenGL3DRenderer::ShaderResources::LoadShaders()
{
-
+ CHECK_GL_ERROR();
if (m_b330Support)
{
m_3DProID = OpenGLHelper::LoadShaders("shape3DVertexShader", "shape3DFragmentShader");
@@ -238,7 +238,10 @@ void OpenGL3DRenderer::ShaderResources::LoadShaders()
m_3DModelID = glGetUniformLocation(m_3DProID, "M");
m_3DNormalMatrixID = glGetUniformLocation(m_3DProID, "normalMatrix");
m_3DVertexID = glGetAttribLocation(m_3DProID, "vertexPositionModelspace");
+ SAL_DEBUG("first " << m_3DVertexID);
m_3DNormalID = glGetAttribLocation(m_3DProID, "vertexNormalModelspace");
+ SAL_DEBUG("second " << m_3DNormalID);
+ CHECK_GL_ERROR();
if (m_bScrollFlag)
{
m_3DBatchProID = OpenGLHelper::LoadShaders("shape3DVertexShaderBatchScroll", "shape3DFragmentShaderBatchScroll");
@@ -249,6 +252,8 @@ void OpenGL3DRenderer::ShaderResources::LoadShaders()
}
else
m_3DBatchProID = OpenGLHelper::LoadShaders("shape3DVertexShaderBatch", "shape3DFragmentShaderBatch");
+
+ CHECK_GL_ERROR();
m_3DBatchProjectionID = glGetUniformLocation(m_3DBatchProID, "P");
m_3DBatchViewID = glGetUniformLocation(m_3DBatchProID, "V");
m_3DBatchModelID = glGetAttribLocation(m_3DBatchProID, "M");
@@ -260,6 +265,7 @@ void OpenGL3DRenderer::ShaderResources::LoadShaders()
//check whether the texture array is support
mbTexBatchSupport = GLEW_EXT_texture_array == 1;
#endif
+ CHECK_GL_ERROR();
if (mbTexBatchSupport)
{
m_BatchTextProID = OpenGLHelper::LoadShaders("textVertexShaderBatch", "textFragmentShaderBatch");
@@ -269,9 +275,11 @@ void OpenGL3DRenderer::ShaderResources::LoadShaders()
m_BatchTextTexCoordID = glGetAttribLocation(m_BatchTextProID, "texCoord");
}
mbTexBatchSupport = m_BatchTextProID ? true : false;
+ CHECK_GL_ERROR();
}
else
{
+ CHECK_GL_ERROR();
//use 300
m_3DProID = OpenGLHelper::LoadShaders("shape3DVertexShaderV300", "shape3DFragmentShaderV300");
m_3DProjectionID = glGetUniformLocation(m_3DProID, "P");
@@ -295,25 +303,36 @@ void OpenGL3DRenderer::ShaderResources::LoadShaders()
m_3DVertexID = glGetAttribLocation(m_3DProID, "vertexPositionModelspace");
m_3DNormalID = glGetAttribLocation(m_3DProID, "vertexNormalModelspace");
}
+ CHECK_GL_ERROR();
if (!mbTexBatchSupport)
{
m_TextProID = OpenGLHelper::LoadShaders("textVertexShader", "textFragmentShader");
m_TextMatrixID = glGetUniformLocation(m_TextProID, "MVP");
m_TextVertexID = glGetAttribLocation(m_TextProID, "vPosition");
+ SAL_DEBUG(m_TextVertexID);
m_TextTexCoordID = glGetAttribLocation(m_TextProID, "texCoord");
+ SAL_DEBUG(m_TextTexCoordID);
m_TextTexID = glGetUniformLocation(m_TextProID, "TextTex");
}
+ CHECK_GL_ERROR();
m_ScreenTextProID = OpenGLHelper::LoadShaders("screenTextVertexShader", "screenTextFragmentShader");
m_ScreenTextVertexID = glGetAttribLocation(m_ScreenTextProID, "vPosition");
+ SAL_DEBUG(m_ScreenTextVertexID);
m_ScreenTextTexCoordID = glGetAttribLocation(m_ScreenTextProID, "texCoord");
+ SAL_DEBUG(m_ScreenTextTexCoordID);
m_ScreenTextTexID = glGetUniformLocation(m_ScreenTextProID, "TextTex");
m_ScreenTextColorID = glGetUniformLocation(m_ScreenTextProID, "textColor");
+ CHECK_GL_ERROR();
m_CommonProID = OpenGLHelper::LoadShaders("commonVertexShader", "commonFragmentShader");
+ SAL_DEBUG(m_CommonProID);
m_MatrixID = glGetUniformLocation(m_CommonProID, "MVP");
- m_2DVertexID = glGetAttribLocation(m_CommonProID, "vPosition");
+ SAL_DEBUG(m_MatrixID);
m_2DColorID = glGetUniformLocation(m_CommonProID, "vColor");
+ SAL_DEBUG(m_2DColorID);
+ m_2DVertexID = glGetAttribLocation(m_CommonProID, "vPosition");
+ SAL_DEBUG(m_2DVertexID);
CHECK_GL_ERROR();
}
@@ -354,21 +373,33 @@ void OpenGL3DRenderer::SetCameraInfo(const glm::vec3& pos, const glm::vec3& dire
void OpenGL3DRenderer::init()
{
+ CHECK_GL_ERROR();
glEnable(GL_CULL_FACE);
+ CHECK_GL_ERROR();
glCullFace(GL_BACK);
+ CHECK_GL_ERROR();
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
// Enable depth test
+ CHECK_GL_ERROR();
glEnable(GL_DEPTH_TEST);
// Accept fragment if it closer to the camera than the former one
+ CHECK_GL_ERROR();
glDepthFunc(GL_LESS);
+ CHECK_GL_ERROR();
glEnable(GL_LINE_SMOOTH);
+ CHECK_GL_ERROR();
glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);
+ CHECK_GL_ERROR();
glEnable(GL_BLEND);
+ CHECK_GL_ERROR();
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ CHECK_GL_ERROR();
glEnable(GL_MULTISAMPLE);
+ CHECK_GL_ERROR();
ClearBuffer();
+ CHECK_GL_ERROR();
glGenBuffers(1, &m_CubeVertexBuf);
glGenBuffers(1, &m_CubeNormalBuf);
@@ -383,16 +414,19 @@ void OpenGL3DRenderer::init()
glBindBuffer(GL_ARRAY_BUFFER, m_BoundBox);
glBufferData(GL_ARRAY_BUFFER, sizeof(boundBox), boundBox, GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
+ CHECK_GL_ERROR();
glGenBuffers(1, &m_BoundBoxNormal);
glBindBuffer(GL_ARRAY_BUFFER, m_BoundBoxNormal);
glBufferData(GL_ARRAY_BUFFER, sizeof(boundBoxNormal), boundBoxNormal, GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
+ CHECK_GL_ERROR();
m_fViewAngle = 30.0f;
m_3DProjection = glm::perspective(m_fViewAngle, (float)m_iWidth / (float)m_iHeight, 0.01f, 6000.0f);
CheckGLSLVersion();
+ CHECK_GL_ERROR();
maResources.LoadShaders();
maPickingResources.LoadShaders();
@@ -410,6 +444,7 @@ void OpenGL3DRenderer::init()
glBindBuffer(GL_ARRAY_BUFFER, m_RenderVertexBuf);
glBufferData(GL_ARRAY_BUFFER, sizeof(squareVertices), squareVertices, GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
+ CHECK_GL_ERROR();
OpenGLHelper::createFramebuffer(m_iWidth, m_iHeight, mnPickingFbo, mnPickingRboDepth, mnPickingRboColor);
@@ -836,6 +871,7 @@ int OpenGL3DRenderer::GenerateRoundCornerBar(std::vector<glm::vec3> &vertices, s
void OpenGL3DRenderer::RenderLine3D(const Polygon3DInfo& polygon)
{
+ CHECK_GL_ERROR();
glUseProgram(maResources.m_CommonProID);
PosVecf3 trans = {0.0f, 0, 0.0};
PosVecf3 angle = {0.0f, 0.0f, 0.0f};
@@ -858,10 +894,14 @@ void OpenGL3DRenderer::RenderLine3D(const Polygon3DInfo& polygon)
else
glUniform4fv(maResources.m_2DColorID, 1, &polygon.polygonColor[0]);
glUniformMatrix4fv(maResources.m_MatrixID, 1, GL_FALSE, &m_3DMVP[0][0]);
+ CHECK_GL_ERROR();
// 1rst attribute buffer : vertices
glEnableVertexAttribArray(maResources.m_2DVertexID);
+ SAL_DEBUG(maResources.m_2DVertexID);
+ CHECK_GL_ERROR();
glBindBuffer(GL_ARRAY_BUFFER, m_VertexBuffer);
+ CHECK_GL_ERROR();
glVertexAttribPointer(maResources.m_2DVertexID, // attribute
3, // size
GL_FLOAT, // type
@@ -870,16 +910,23 @@ void OpenGL3DRenderer::RenderLine3D(const Polygon3DInfo& polygon)
(void*)0 // array buffer offset
);
+ CHECK_GL_ERROR();
glLineWidth(polygon.lineWidth);
+ CHECK_GL_ERROR();
glDrawArrays(GL_LINE_STRIP, 0, pointList->size());
+ CHECK_GL_ERROR();
glDisableVertexAttribArray(maResources.m_2DVertexID);
+ CHECK_GL_ERROR();
glBindBuffer(GL_ARRAY_BUFFER, 0);
+ CHECK_GL_ERROR();
}
glUseProgram(0);
+ CHECK_GL_ERROR();
}
void OpenGL3DRenderer::RenderPolygon3D(const Polygon3DInfo& polygon)
{
+ CHECK_GL_ERROR();
size_t verticesNum = polygon.verticesList.size();
size_t normalsNum = polygon.normalsList.size();
//check whether the number of vertices and normals are equal
@@ -887,11 +934,13 @@ void OpenGL3DRenderer::RenderPolygon3D(const Polygon3DInfo& polygon)
glPolygonOffset(1.0, 1.0);
else
glPolygonOffset(-1.0, -1.0);
+ CHECK_GL_ERROR();
if (verticesNum != normalsNum)
{
return ;
}
glBindBuffer(GL_UNIFORM_BUFFER, 0);
+ CHECK_GL_ERROR();
if(mbPickingMode)
{
glUseProgram(maPickingResources.m_CommonProID);
@@ -905,6 +954,7 @@ void OpenGL3DRenderer::RenderPolygon3D(const Polygon3DInfo& polygon)
glUseProgram(maResources.m_3DProID);
glUniformMatrix4fv(maResources.m_3DViewID, 1, GL_FALSE, &m_3DView[0][0]);
glUniformMatrix4fv(maResources.m_3DProjectionID, 1, GL_FALSE, &m_3DProjection[0][0]);
+ CHECK_GL_ERROR();
if (maResources.m_b330Support)
{
//update ubo
@@ -920,12 +970,14 @@ void OpenGL3DRenderer::RenderPolygon3D(const Polygon3DInfo& polygon)
glUniform1fv(maResources.m_3DMinCoordXID, 1, &minCoordX);
glUniform1fv(maResources.m_3DMaxCoordXID, 1, &maxCoordX);
glUniform1i(maResources.m_3DUndrawID, m_bUndrawFlag);
+ CHECK_GL_ERROR();
//update light information
glUniform4fv(maResources.m_3DLightColorID, m_iLightNum, (GLfloat*)m_LightColor);
glUniform4fv(maResources.m_3DLightPosID, m_iLightNum, (GLfloat*)m_PositionWorldspace);
glUniform1fv(maResources.m_3DLightPowerID, m_iLightNum, m_fLightPower);
glUniform1i(maResources.m_3DLightNumID, m_iLightNum);
glUniform4fv(maResources.m_3DLightAmbientID, 1, &m_Ambient[0]);
+ CHECK_GL_ERROR();
//update meterial information
glUniform4fv(maResources.m_3DMaterialAmbientID, 1, &polygon.material.ambient[0]);
glUniform4fv(maResources.m_3DMaterialDiffuseID, 1, &polygon.material.diffuse[0]);
@@ -959,9 +1011,13 @@ void OpenGL3DRenderer::RenderPolygon3D(const Polygon3DInfo& polygon)
{
//fill normal buffer
glBindBuffer(GL_ARRAY_BUFFER, m_NormalBuffer);
+ CHECK_GL_ERROR();
glBufferData(GL_ARRAY_BUFFER, normalList->size() * sizeof(glm::vec3), &normalList[0][0], GL_STATIC_DRAW);
+ CHECK_GL_ERROR();
glUniformMatrix4fv(maResources.m_3DModelID, 1, GL_FALSE, &m_Model[0][0]);
+ CHECK_GL_ERROR();
glUniformMatrix3fv(maResources.m_3DNormalMatrixID, 1, GL_FALSE, &normalInverseTranspos[0][0]);
+ CHECK_GL_ERROR();
}
else
{
@@ -969,10 +1025,13 @@ void OpenGL3DRenderer::RenderPolygon3D(const Polygon3DInfo& polygon)
glUniformMatrix4fv(maPickingResources.m_MatrixID, 1, GL_FALSE, &aMVP[0][0]);
glUniform4fv(maPickingResources.m_2DColorID, 1, &polygon.id[0]);
}
+ CHECK_GL_ERROR();
GLint maVertexID = mbPickingMode ? maPickingResources.m_2DVertexID : maResources.m_3DVertexID;
// 1rst attribute buffer : vertices
glEnableVertexAttribArray(maVertexID);
+ CHECK_GL_ERROR();
glBindBuffer(GL_ARRAY_BUFFER, m_VertexBuffer);
+ CHECK_GL_ERROR();
glVertexAttribPointer(maVertexID, // attribute
3, // size
GL_FLOAT, // type
@@ -980,11 +1039,14 @@ void OpenGL3DRenderer::RenderPolygon3D(const Polygon3DInfo& polygon)
0, // stride
(void*)0 // array buffer offset
);
+ CHECK_GL_ERROR();
if(!mbPickingMode)
{
// 2nd attribute buffer : normals
glEnableVertexAttribArray(maResources.m_3DNormalID);
+ CHECK_GL_ERROR();
glBindBuffer(GL_ARRAY_BUFFER, m_NormalBuffer);
+ CHECK_GL_ERROR();
glVertexAttribPointer(maResources.m_3DNormalID, // attribute
3, // size
GL_FLOAT, // type
@@ -993,14 +1055,20 @@ void OpenGL3DRenderer::RenderPolygon3D(const Polygon3DInfo& polygon)
(void*)0 // array buffer offset
);
}
+ CHECK_GL_ERROR();
glDrawArrays(GL_POLYGON, 0, pointList->size());
+ CHECK_GL_ERROR();
glDisableVertexAttribArray(maVertexID);
+ CHECK_GL_ERROR();
if(!mbPickingMode)
glDisableVertexAttribArray(maResources.m_3DNormalID);
+ CHECK_GL_ERROR();
glBindBuffer(GL_ARRAY_BUFFER, 0);
+ CHECK_GL_ERROR();
}
glUseProgram(0);
+ CHECK_GL_ERROR();
}
namespace {
@@ -1034,6 +1102,7 @@ void OpenGL3DRenderer::ReleasePolygonShapes()
void OpenGL3DRenderer::RenderPolygon3DObject()
{
glDepthMask(GL_FALSE);
+ CHECK_GL_ERROR();
for (size_t i = 0; i < m_Polygon3DInfoList.size(); i++)
{
Polygon3DInfo &polygon = m_Polygon3DInfoList[i];
@@ -1041,6 +1110,7 @@ void OpenGL3DRenderer::RenderPolygon3DObject()
{
//just use the common shader is ok for lines
RenderLine3D(polygon);
+ CHECK_GL_ERROR();
}
else
{
@@ -1310,7 +1380,9 @@ void OpenGL3DRenderer::UpdateBatch3DUniformBlock()
if(mbPickingMode)
return;
+ CHECK_GL_ERROR();
glBindBuffer(GL_UNIFORM_BUFFER, m_Batch3DUBOBuffer);
+ CHECK_GL_ERROR();
glBufferSubData(GL_UNIFORM_BUFFER, 0, sizeof(GLint), &m_LightsInfo.lightNum);
CHECK_GL_ERROR();
//current std140 alignment: 16
@@ -1327,7 +1399,9 @@ void OpenGL3DRenderer::Update3DUniformBlock()
if(mbPickingMode)
return;
+ CHECK_GL_ERROR();
glBindBuffer(GL_UNIFORM_BUFFER, m_3DUBOBuffer);
+ CHECK_GL_ERROR();
glBufferSubData(GL_UNIFORM_BUFFER, 0, sizeof(GLint), &m_LightsInfo.lightNum);
CHECK_GL_ERROR();
//current std140 alignment: 16
@@ -1555,9 +1629,11 @@ void OpenGL3DRenderer::ReleaseExtrude3DShapes()
void OpenGL3DRenderer::RenderExtrude3DObject()
{
+ CHECK_GL_ERROR();
glEnable(GL_DEPTH_TEST);
glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);
+ CHECK_GL_ERROR();
if(mbPickingMode)
{
glUseProgram(maPickingResources.m_CommonProID);
@@ -1569,6 +1645,7 @@ void OpenGL3DRenderer::RenderExtrude3DObject()
glUseProgram(maResources.m_3DProID);
glUniformMatrix4fv(maResources.m_3DViewID, 1, GL_FALSE, &m_3DView[0][0]);
glUniformMatrix4fv(maResources.m_3DProjectionID, 1, GL_FALSE, &m_3DProjection[0][0]);
+ CHECK_GL_ERROR();
if (maResources.m_b330Support)
{
//update ubo
@@ -1980,6 +2057,7 @@ void OpenGL3DRenderer::RenderTextShapeBatch()
CHECK_GL_ERROR();
glEnableVertexAttribArray(maResources.m_BatchTextTexCoordID);
glBindBuffer(GL_ARRAY_BUFFER, m_TextTexCoordBufBatch);
+ CHECK_GL_ERROR();
glVertexAttribPointer(
maResources.m_BatchTextTexCoordID,
3, // size
@@ -1993,8 +2071,10 @@ void OpenGL3DRenderer::RenderTextShapeBatch()
{
int vertexNum = m_TextInfoBatch.texture[i].subTextureNum;
glBindBuffer(GL_ARRAY_BUFFER, m_VertexBuffer);
+ CHECK_GL_ERROR();
glBufferData(GL_ARRAY_BUFFER, 4 * vertexNum * sizeof(glm::vec3), &m_TextInfoBatch.vertexList[4 * i * m_TextInfoBatch.batchNum], GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, m_TextTexCoordBufBatch);
+ CHECK_GL_ERROR();
glBufferData(GL_ARRAY_BUFFER, 4 * vertexNum * sizeof(glm::vec3), &m_TextInfoBatch.textureCoordList[4 * i * m_TextInfoBatch.batchNum], GL_STATIC_DRAW);
glBindTexture(GL_TEXTURE_2D_ARRAY, m_TextInfoBatch.texture[i].textureID);
CHECK_GL_ERROR();
@@ -2008,6 +2088,7 @@ void OpenGL3DRenderer::RenderTextShapeBatch()
glDisableVertexAttribArray(maResources.m_BatchTextTexCoordID);
CHECK_GL_ERROR();
glBindTexture(GL_TEXTURE_2D_ARRAY, 0);
+ CHECK_GL_ERROR();
glUseProgram(0);
}
void OpenGL3DRenderer::RenderTextShape()
@@ -2083,10 +2164,14 @@ void OpenGL3DRenderer::CreateSceneBoxView()
void OpenGL3DRenderer::ClearBuffer()
{
+ CHECK_GL_ERROR();
glDisable(GL_DEPTH_TEST);
+ CHECK_GL_ERROR();
glClearDepth(1.0f);
+ CHECK_GL_ERROR();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+ CHECK_GL_ERROR();
/*
* TODO: moggi: use a shader!!!
@@ -2102,15 +2187,20 @@ void OpenGL3DRenderer::ClearBuffer()
*/
glEnable(GL_DEPTH_TEST);
+ CHECK_GL_ERROR();
}
void OpenGL3DRenderer::ProcessUnrenderedShape(bool bNewScene)
{
glViewport(0, 0, m_iWidth, m_iHeight);
+ CHECK_GL_ERROR();
ClearBuffer();
+ CHECK_GL_ERROR();
CreateSceneBoxView();
+ CHECK_GL_ERROR();
CalcScrollMoveMatrix(bNewScene);
//Polygon
+ CHECK_GL_ERROR();
RenderPolygon3DObject();
//Shape3DExtrudeObject
if(mbPickingMode)