So, I started learning OpenGL by reading from the book "OpenGL Super Bible 5 ed.". This explains very well, and I myself was able to create my first gl! Just something simple, a rotating three-dimensional pyramid.
Now, for some reason, one of the faces is not rendering. I checked the vertecies (first printed on paper) and that seemed right. If I changed the shader to draw a linear loop, it would be visualized. However, it will not display a triangle. Can someone explain why?
void setupRC() { glClearColor(0.0f, 0.0f, 0.0f, 1.0f); shaderManager.InitializeStockShaders(); M3DVector3f vVerts1[] = {-0.5f,0.0f,-0.5f,0.0f,0.5f,0.0f,0.5f,0.0f,-0.5f}; M3DVector3f vVerts2[] = {-0.5f,0.0f,-0.5f,0.0f,0.5f,0.0f,-0.5f,0.0f,0.5f}; M3DVector3f vVerts3[] = {-0.5f,0.0f,0.5f,0.0f,0.5f,0.0f,0.5f,0.0f,0.5f}; M3DVector3f vVerts4[] = {0.5f,0.0f,0.5f,0.0f,0.5f,0.0f,0.5f,0.0f,-0.5f}; triangleBatch1.Begin(GL_LINE_LOOP, 3); triangleBatch1.CopyVertexData3f(vVerts1); triangleBatch1.End(); triangleBatch2.Begin(GL_TRIANGLES, 3); triangleBatch2.CopyVertexData3f(vVerts2); triangleBatch2.End(); triangleBatch3.Begin(GL_TRIANGLES, 3); triangleBatch3.CopyVertexData3f(vVerts3); triangleBatch3.End(); triangleBatch4.Begin(GL_TRIANGLES, 3); triangleBatch4.CopyVertexData3f(vVerts4); triangleBatch4.End(); glEnable(GL_CULL_FACE); } float rot = 1; void renderScene() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); GLfloat vRed[] = {1.0f, 0.0f, 0.0f, 0.5f}; GLfloat vBlue[] = {0.0f, 1.0f, 0.0f, 0.5f}; GLfloat vGreen[] = {0.0f, 0.0f, 1.0f, 0.5f}; GLfloat vWhite[] = {1.0f, 1.0f, 1.0f, 0.5f}; M3DMatrix44f transformMatrix; if (rot >= 360) rot = 0; else rot = rot + 1; m3dRotationMatrix44(transformMatrix,m3dDegToRad(rot),0.0f,1.0f,0.0f); shaderManager.UseStockShader(GLT_SHADER_FLAT, transformMatrix, vRed); triangleBatch1.Draw(); shaderManager.UseStockShader(GLT_SHADER_FLAT, transformMatrix, vBlue); triangleBatch2.Draw(); shaderManager.UseStockShader(GLT_SHADER_FLAT, transformMatrix, vGreen); triangleBatch3.Draw(); shaderManager.UseStockShader(GLT_SHADER_FLAT, transformMatrix, vWhite); triangleBatch4.Draw(); glutSwapBuffers(); glutPostRedisplay(); Sleep(10); }