Я пытаюсь добавить текстуру к простому квадрату более 5 часов, но мне все еще не удается это сделать.OpenGL: Не удается получить текстуры для отображения
Вот код, я использую в paintGL():
glEnable(GL_TEXTURE_2D);
GLuint id;
glGenTextures(1, &id);
glBindTexture(GL_TEXTURE_2D, id);
float pixels[] = {
0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f,
1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f
};
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 2, 2, 0, GL_RGB, GL_FLOAT, pixels);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(0,0,0);
glTexCoord2f(1.0f, 0.0f); glVertex3f(1,0,0);
glTexCoord2f(1.0f, 1.0f); glVertex3f(1,1,0);
glTexCoord2f(0.0f, 1.0f); glVertex3f(0,1,0);
glEnd();
if (glGetError() != 0)
{
qDebug() << glGetError();
}
Там нет ошибок, ни те, OpenGL в. Я инициализировал прозрачный цвет до серого. Когда я пытаюсь изменить цвет с помощью glColor3f(...)
, он работает.
Я прочитал все учебные пособия, которые я смог найти в Google, но никто не помог.
РЕШЕНИЕ: Я никогда не ставил
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
в нужном месте: сразу после glTexImage2D
! Код выше отредактирован и теперь работает как шарм.
Перед 'glBegin', попробуйте добавить:' glColor4f (1.0f, 1.0f, 1.0f, 1.0f); 'Значение оттенка будет белым (текстура будет рисоваться при оригинальном цвете и непрозрачности). – Brandon
Квадрат белый, только белый. – kiwixz
Можете ли вы добавить следующие два строчки в свой код после 'glTexImage2D (...)' (чтобы сделать вашу копию mipmap завершена)? 'glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, 0); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0); '. После этого, если вы будете следовать запросу user1118321, я подозреваю, что проблема будет решена. –