[英]glDrawElements not drawing anything
我正在使用c / c ++(NDK)for android在opengl es 2.0中編程。 我正在使用GLM庫!
到目前為止,我可以使用glDrawArrays在黑色背景上繪制一個白色三角形,但是當我嘗試使用glDrawElements繪制相同的三角形時,它不會繪制任何內容。
相關代碼:
float triangleCoords[] = { // in counterclockwise order:
0, 5, 5, // top
-5, 0, 5, // bottom left
5, 0, 5 // bottom right
};
float color[] = { 1,1,1, 1.0f };
GLuint drawOrder[]={0,1,2};
glClear(GL_COLOR_BUFFER_BIT);
glUseProgram(program);
int positionHandle=glGetAttribLocation(program,"vPosition");
int matrixHandle = glGetUniformLocation(program, "uMVPMatrix");
glEnableVertexAttribArray(positionHandle);
glUniformMatrix4fv(matrixHandle,1,GL_FALSE,glm::value_ptr(mvpMatrix));
glVertexAttribPointer(positionHandle,3,GL_FLOAT,GL_FALSE,0,triangleCoords);
int colorHandle =glGetUniformLocation(program, "vColor");
glUniform4fv(colorHandle, 1, color);
//glDrawArrays(GL_TRIANGLES, 0, 3); <== This works
glDrawElements(GL_TRIANGLES,3,GL_UNSIGNED_INT,drawOrder); <== This does not works
glDisableVertexAttribArray(positionHandle);
//swapbuffers and stuff
着色器非常基礎
std::string vertexShaderCode =
"attribute vec4 vPosition; "
"uniform mat4 uMVPMatrix; "
"void main() {"
" gl_Position = uMVPMatrix*vPosition;"
"}";
std::string fragmentShaderCode =
"precision mediump float;"
"uniform vec4 vColor;"
"void main() {"
" gl_FragColor = vColor;"
"}";
OpenGLES不保證索引支持GL_UNSIGNED_INT。 使用GL_UNSIGNED_SHORT:
GLushort drawOrder[]={0,1,2};
...
glDrawElements(GL_TRIANGLES,3,GL_UNSIGNED_SHORT,drawOrder);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.