开发者

OpenGL quads smaller than expected

开发者 https://www.devze.com 2023-03-11 14:54 出处:网络
Running on iPad. Mappi开发者_高级运维ng a texture that is 256x256 onto a quad.I\'m trying to render it exactly the same size as the actual image.The quad looks correct (shape is right, texture mapped

Running on iPad.

Mappi开发者_高级运维ng a texture that is 256x256 onto a quad. I'm trying to render it exactly the same size as the actual image. The quad looks correct (shape is right, texture mapped correctly), but it is only ~75% of the size of the actual .png.

Not sure why.

The code is characterized as follows (excerpts below):

Screen is 768x1024. Windows is 768x1024 as well.

    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,
    };

followed by the appropriate calls to:

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

then

    glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);

Why is my sprite smaller than 256x256 when rendered?


Your output is 192x192 (approx) because your quad is the wrong size. It's 0.25x0.25 and the "unit length" direction is X which is 768 wide, so it's 0.25 * 768 = 192. If you switched your glOrthof so that top/bottom were -0.5 and +0.5 (with appropriate correction to X) it would work.

0

精彩评论

暂无评论...
验证码 换一张
取 消