Отображение текстуры 3D-объекта с помощью 2D-текстуры в openGL - PullRequest
1 голос
/ 17 октября 2011

У меня есть куб, который состоит из треугольников, поэтому 8 вершин и соответствующих сторон для создания треугольника.У меня проблемы с созданием текстурных координат для этого куба.Я пытался использовать такие значения, как:

    float amt = 1.0f;
m_texBuffer.push_back(Texel(0.0f, 0.0f));
m_texBuffer.push_back(Texel(amt, 0.0f));
m_texBuffer.push_back(Texel(amt, amt));
m_texBuffer.push_back(Texel(0.0f, amt));

m_texBuffer.push_back(Texel(0.0f, 0.0f));
m_texBuffer.push_back(Texel(amt, 0.0f));
m_texBuffer.push_back(Texel(amt, amt));
m_texBuffer.push_back(Texel(0.0f, amt));

Я получаю странные визуальные результаты с переменными значениями amt.Я понимаю, что, поскольку изображение может быть меньше, чем реальный объект, это не обязательно означает однозначное соответствие, поэтому я попытался сделать небольшое значение, но все равно не пошел.

1 Ответ

1 голос
/ 17 октября 2011

Для обычных текстур диапазон выборки в каждой координате составляет от 0 до 1, независимо от разрешения выборки.

К сожалению, ваш код абсолютно ничего не говорит, это может быть что угодно Нам действительно нужно больше узнать об этом, особенно о реальных вызовах OpenGL.

РЕДАКТИРОВАТЬ из-за комментария

Загружая данные изображения, нужно сообщить OpenGL расположение данных в буфере. Основная информация

(параметры для glTexImage)

  • количество компонентов
  • расположение компонентов
  • размер каждого компонента

(параметры для glPixelStore)

  • выравнивание (0 для плотной упаковки, в противном случае выравнивание до 1, 2 или 4 байта)
  • длина строки в пикселях и строках (обычно это 0)

Пожалуйста, ознакомьтесь с документацией glTexImage и glPixelStore и установите их в соответствии с вашими данными изображения.

...