OpenGL圆形纹理贴图

刚学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)



就可以了

温馨提示:答案为网友推荐,仅供参考