OpenGL四边形小于预期

时间:2011-06-08 07:01:07

标签: opengl-es sprite

在iPad上运行。

将256x256的纹理映射到四边形。我试图渲染它与实际图像完全相同的大小。四边形看起来正确(形状正确,纹理映射正确),但它只是实际.png大小的75%。

不确定原因。

代码的特征如下(摘录如下):

屏幕是768x1024。 Windows也是768x1024。

    glViewport(0, 0, 768, 1024);  // aspect ratio 1:1.333
    glOrthof(-0.5f, 0.5f, -0.666f, 0.666f, -1.0f, 1.0f); // matching aspect ratio with 0,0 centered

    // Sets up an array of values to use as the sprite vertices.  
    //.25 of 1024 is 256 pixels so the quad (centered on 0,0) spans -0.125, 
    //-0.125 to 0.125, 0.125 (bottom left corner and upper right corner)

    GLfloat spriteVertices[] = {
       -0.125f, -0.125f,
        0.125f, -0.125f,
       -0. 125f,  0.125f,
        0.125f,  0.125f,
    };

    // Sets up an array of values for the texture coordinates.

    const GLshort spriteTexcoords[] = {
        0, 0,
        1, 0,
        0, 1,
        1, 1,
    };

然后拨打适当的电话:

    glVertexPointer(2, GL_FLOAT, 0, spriteVertices);
    glTexCoordPointer(2, GL_SHORT, 0, spriteTexcoords);

然后

    glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);

渲染时为什么我的精灵小于256x256?

1 个答案:

答案 0 :(得分:3)

您的输出为192x192(大约),因为您的四边形大小错误。它是0.25x0.25,“单位长度”方向是X,它是768宽,所以它是0.25 * 768 = 192.如果你切换glOrthof使得顶部/底部是-0.5和+0.5(适当的话)修正X)它会起作用。