glDrawElements不绘制任何东西
glDrawElements not drawing anything
我正在使用 c/c++ (NDK) for android 在 opengl es 2.0 中编程。我正在使用 GLM 库!
到目前为止,我可以使用 glDrawArray 在黑色背景上绘制一个白色三角形,但是当我尝试使用 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);
相关文章:
- OpenGL 着色器不绘制任何东西 - 糟糕的精灵类
- 使用 glDepthFunc(GL_GREATER) 不会绘制任何内容
- OpenGL 3.3不能绘制任何东西
- DirectX不绘制任何内容
- OpenGL + SDL + glew 在成功初始化后不会绘制任何内容
- c++ Glut 显示需要调用我的绘制函数,但我无法传递任何参数
- 为什么我的 openGL 顶点缓冲区对象不会绘制任何内容?
- Opengl 3.3 不会绘制任何东西。使用 GLSL 330 内核
- OpenGL - 重新绑定 glBindVertexArray 不会在屏幕上绘制任何内容
- 使用OpenCV教程中的任何一个进行人脸检测是否有任何函数可以计算绘制在人脸上的矩形的大小
- 如何将顶点位置传递给顶点着色器.我写了一个着色器,它不会在屏幕上绘制任何内容
- 如何在不使用任何框架或库的情况下在屏幕上绘制图形
- glDrawElements不绘制任何东西
- OpenGL着色器没有绘制任何东西:/
- Android NDK中的OpenGL ES 2.0:没有绘制任何内容
- 为什么我的OpenGL 3.3应用程序没有绘制任何内容
- 使用Qt绘制抛物线或任何其他多项式
- C++ + glut + OpenGL + gluSphere 不绘制任何东西
- 尝试将着色器与 Win32 OpenGL 一起使用,但顶点着色器不绘制任何内容
- glDrawArrays在gl_triangle模式下不绘制任何东西