LINUX.ORG.RU

Элементарное: Не могу отобразить текстурированный прямоугольник в OpenGL

 , , текстура


0

1

Начал пилить один небольшой проект и застрял в самом начале.

Не могу понять, как отобразить через OpenGL текстурированный 2D прямоугольник. Вместо текстуры отображается одноцветный прямоугольник. Причем отображается цветом, которым перед отрисовкой прямоугольника отрисовывалась надпись с FPS.

Вот минимальный пример:

https://anonfiles.com/0b79nc73n1/funMashine.tar_gz

Собирать можно как через cmake, так и через qmake. Используется голый C++11 со стандартными графическими библиотеками. Для загрузки картинки используется либа SOIL (в Дебиане она есть в стандартном репозитарии). Если собирать через qmake, то перед запуском нужно проследить чтобы рядом с бинарником лежала директория /pic.

В данном примере отрисовка картинки запускается в методе:

void WheelsKit::drawSource()
{
    CORE.imagesRepo().image("symbol01").draw();
}


Сам метод отрисовки выглядит так:
void Image::draw()
{
    // cout << "Draw texture id: " << mTextureId << "\n";

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glBindTexture(GL_TEXTURE_2D, mTextureId);

    glBegin(GL_QUADS);
        glTexCoord2f(0.0, 0.0);
        glVertex3f(-0.5, -0.5, 0.0);
        glTexCoord2f(0.0, 1.0);
        glVertex3f(-0.5, 0.5, 0.0);
        glTexCoord2f(1.0, 1.0);
        glVertex3f(0.5, 0.5, 0.0);
        glTexCoord2f(1.0, 0.0);
        glVertex3f(0.5, -0.5, 0.0);
    glEnd();

    glBindTexture(GL_TEXTURE_2D, 0);
}


В переменной mTextureId хранится номер заранее загруженной в GPU текстуры. Загрузка текстуры происходит в начале программы, в методе:
void Image::load(string fileName) {...}


Инициализация OpenGL происходит при старте программы, в методе:
void Core::openGlInit(int &argc, char** argv)


Я уже третий день бъюсь со всякими параметрами OpenGL, но текстуру все еще не увидел. Видимо, я что-то упускаю, какую-то настройку. Что еще надо добавить/переделать?

★★★★★
Ответ на: комментарий от Xintrea

Ну вот самое ценное на практике и выясняешь =) Потихоньку, полегоньку главное за всё не хвататься, а только за то что тебе будет нужно для рисования. По сути всё основное у тебя уже есть. Упорство и труд всё перетрут

LINUX-ORG-RU ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.