刚学OpenGL,需要绘制一个圆形并进行贴图,我使用20个三角形组成一个圆,但是怎么贴图呀,纹理的那四个点怎么设置,网上找的教程都是立方体的,希望大神能指点一下,非常感谢!!
建议你去PowerVR网站去找 他们提供的 Opengles pc 模拟器SDK. 里面很多gl的例子
而且你从第一节课可以看到从搭建三角形 开始的demo.
至于绑定纹理, 步骤如下:
GLfloat afVertices[] = {-0.4f,-0.4f,0.0f, // Pos
0.0f,0.0f , // UVs
0.4f,-0.4f,0.0f,
1.0f,0.0f ,
0.0f,0.4f ,0.0f,
0.5f,1.0f};
glGenBuffers(1, &m_ui32Vbo);
m_ui32VertexStride = 5 * sizeof(GLfloat); // 3 floats for the pos, 2 for the UVs
// Bind the VBO
glBindBuffer(GL_ARRAY_BUFFER, m_ui32Vbo);
// Set the buffer's data
glBufferData(GL_ARRAY_BUFFER, 3 * m_ui32VertexStride, afVertices, GL_STATIC_DRAW);
// Unbind the VBO
glBindBuffer(GL_ARRAY_BUFFER, 0);
上面是建立一个VBO buffer,每个顶点有 xyz ,uv 5个数据.uv就是纹理坐标
绘制时:
// Bind the VBO
glBindBuffer(GL_ARRAY_BUFFER, m_ui32Vbo);
// Pass the vertex data
glEnableVertexAttribArray(VERTEX_ARRAY);
glVertexAttribPointer(VERTEX_ARRAY, 3, GL_FLOAT, GL_FALSE, m_ui32VertexStride, 0);
// Pass the texture coordinates data
glEnableVertexAttribArray(TEXCOORD_ARRAY);
glVertexAttribPointer(TEXCOORD_ARRAY, 2, GL_FLOAT, GL_FALSE, m_ui32VertexStride, (void*) (3 * sizeof(GLfloat)));
// Draws a non-indexed triangle array
glDrawArrays(GL_TRIANGLES, 0, 3);
// Unbind the VBO
glBindBuffer(GL_ARRAY_BUFFER, 0)
就可以了