opengl-es - 使用 OpenGL ES 的 glTexCoordPointer 问题

标签 opengl-es textures

我在将纹理映射到三角形条时遇到一些问题。我想我仍然没有完全理解纹理坐标。

我有一个 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/

相关文章:

android - OpenGL ES 1.1 每个网格多个纹理

android - 如何在 2D 中使用 OpenGL ES 的折射功能?

opengl-es - OpenGL ES中高效的绘图方式

opengl - 使用 OpenGL 用不同的图像对立方体进行纹理化

iphone - iPhone (OpenGL ES) 上有 glPolygonMode 替代方案吗?

javascript - 文本渲染 WebGL

android - 在 Android 上使用 OpenGL ES 显示透明纹理时出现问题

three.js - 在Three.js中的MeshPhongMaterial或MeshLambertMaterial上转换阴影

c++ - 摄像头和图像识别

android - Android 是否使用自定义窗口系统?