我在将纹理映射到三角形条时遇到一些问题。我想我仍然没有完全理解纹理坐标。
我有一个 512x512 纹理,我正在尝试将其 320x64 部分映射到三角形条上。
这是我的代码:
static const Vertex3D bg_vertex [] =
{
{ 0, 0, 0}, { 0, 64, 0}, { 64, 0, 0},
{ 64, 64, 0}, {128, 0, 0}, {128, 64, 0},
{192, 0, 0}, {192, 64, 0}, {256, 0, 0},
{256, 64, 0}, {320, 0, 0}, {320, 64, 0}
};
static const GLfloat bg_texcoords [] =
{
{1.000, 0.000}, {1.000, 0.125}, {0.875, 0.000}, {0.875, 0.125}, {0.750, 0.000}, {0.750, 0.125},
{0.625, 0.000}, {0.625, 0.125}, {0.500, 0.000}, {0.500, 0.125}, {0.375, 0.000}, {0.375, 0.125}
};
glBindTexture (GL_TEXTURE_2D, bg1Texture);
glEnable(GL_TEXTURE_2D);
glColor4f (1.0, 1.0, 1.0, 1.0);
glTexCoordPointer(2, GL_FLOAT, 0, bg_texcoords);
glVertexPointer(3, GL_FLOAT, 0, &bg_vertex);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 12);
当我运行代码时,它在三角形条上显示原始纹理的扭曲图像。
有人可以告诉我我做错了什么吗?
谢谢
最佳答案
好的,当我从纹理坐标中删除额外的大括号时,它现在可以工作了:
static const GLfloat bg_texcoords [] =
{
1.000, 0.000, 1.000, 0.125, 0.875, 0.000, 0.875, 0.125, 0.750, 0.000, 0.750, 0.125,
0.625, 0.000, 0.625, 0.125, 0.500, 0.000, 0.500, 0.125, 0.375, 0.000, 0.375, 0.125
};
现在它可以将纹理完美地映射到三角形上
关于opengl-es - 使用 OpenGL ES 的 glTexCoordPointer 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1161659/