OpenGL меньше, чем ожидалось - PullRequest
1 голос
/ 08 июня 2011

Запуск на iPad.

Отображение текстуры размером 256x256 на квад.Я пытаюсь сделать его точно такого же размера, как и реальное изображение.Квадрат выглядит правильно (форма правильная, текстура отображается правильно), но он составляет всего ~ 75% от размера фактического .png.

Не уверен, почему.

Код характеризуетсяследующим образом (выдержки ниже):

Экран 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 Ответ

3 голосов
/ 08 июня 2011

Ваш вывод - 192x192 (приблизительно), потому что ваш квад - неправильный размер. Это 0,25x0,25, а направление «единичной длины» равно X, ширина которого составляет 768, поэтому это 0,25 * 768 = 192. Если вы переключили glOrthof так, чтобы верх / низ были -0,5 и +0,5 (с соответствующей коррекцией к X) это будет работать.

...