use*_*111 3 c c++ opengl opengl-3
我正在尝试使用OpenGL 3.x +为背景(2D)绘制四边形.不推荐使用四边形,因此目标是使用两个三角形来制作填充屏幕的矩形.这是有效的,但我不是100%清楚这里的一切.
建立
GLuint positionBufferObject;
GLfloat vertexPositions[] =
{
-1.0f, -1.0f, 0.0f, 1.0f,
-1.0f, 1.0f, 0.0f, 1.0f,
1.0f, 1.0f, 0.0f, 1.0f,
1.0f, -1.0f, 0.0f, 1.0f,
-1.0f, -1.0f, 0.0f, 1.0f,
};
glGenBuffers(1, &positionBufferObject);
glBindBuffer(GL_ARRAY_BUFFER, positionBufferObject);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertexPositions), vertexPositions, GL_STATIC_DRAW);
Run Code Online (Sandbox Code Playgroud)
vertexPositions,这是一个顶点数组.glGenBuffers()是说,我想要1个缓冲区并分配id &positionBufferObject?glBufferData()上传vertexPositions到GPU的内存; 但是由于我没有给它一个ID,它怎么知道上传呢? 画
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 0, 0);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 5);
glDisableVertexAttribArray(0);
Run Code Online (Sandbox Code Playgroud)
glEnableVertexAttribArray() 只是说我要用数组0绘图?glDrawArrays() - 如果我想绘制两个顶点数组怎么办?它是如何知道要渲染的?它知道从上面的命令?glVertexAttribPointer()?glDrawArrays() 清楚了.清理,我觉得这是对的吗?
glBindBuffer(GL_ARRAY_BUFFER, 0);
glDeleteBuffers(1, &positionBufferObject);
Run Code Online (Sandbox Code Playgroud)
我只进行一次安装/清理.
奖励积分:
glGenBuffers(1, &positionBufferObject);说"制作一个顶点缓冲对象,并且positionBufferObject是它的ID."
glBindBuffer(GL_ARRAY_BUFFER, positionBufferObject);说" positionBufferObject现在是现在GL_ARRAY_BUFFER."
glBufferData(GL_ARRAY_BUFFER, sizeof(vertexPositions), vertexPositions, GL_STATIC_DRAW);说"上传vertexPositions到当前绑定的ID GL_ARRAY_BUFFER(即positionBufferObject)."
glEnableVertexAttribArray(0); 说"顶点属性数组0现在可以使用了".
glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 0, 0); 说"顶点属性数组0将被解释为由4个浮点数组成的组合".
glDrawArrays(GL_TRIANGLE_STRIP, 0, 5); 说"从每个启用的数组中绘制一个带有五个索引的三角形条带."
glDisableVertexAttribArray(0); 说"我们暂时使用顶点属性数组0".
| 归档时间: |
|
| 查看次数: |
3164 次 |
| 最近记录: |