OpenGl - текстура glutSolidSphere? - PullRequest
       18

OpenGl - текстура glutSolidSphere?

0 голосов
/ 07 января 2012

Как я могу применить текстуру к glutSolidSphere?

это то, что я пробовал, но это не работает:

GLuint textureid;
    glGenTextures(1, &textureid);
    glBindTexture(GL_TEXTURE_2D, textureid);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, "stone.tga");
// Planet
    glDisable(GL_LIGHTING);
    glBindTexture(GL_TEXTURE_2D, textureid);
    glutSolidSphere(35.0f, 30, 17);
    glEnable(GL_LIGHTING);

Может кто-нибудь подсказать мне, как загрузить текстуру и включить ее.

я слышал, что glutSolidSphere уже выдает текстурные координаты, поэтому мне не нужно делать там ничего особенного.

1 Ответ

1 голос
/ 07 января 2012

Ваша проблема в том, что вы на самом деле не создаете текстуру с glTexImage2D.Последний параметр должен представлять собой byte[] цветов пиксельных каналов в следующем порядке: красный, зеленый, синий, альфа (как указано другими параметрами - GL_UNSIGNED_BYTE и GL_RGBA), а не только имя файла.

OpenGL не имеет ни малейшего представления, что это за файл, как читать файл из системной файловой системы или как анализировать формат файла TGA.Он ожидает необработанные данные о цвете, поэтому вам необходимо загрузить и проанализировать изображение и передать byte[] в OpenGL (технически указатель на первый элемент как void*).Есть несколько направляющих , которые дают вам минимальный код, необходимый для анализа TGA-файла, но вы также можете использовать библиотеку, такую ​​как FreeImage для обработки загрузки ваших текстур,и он работает с гораздо большим, чем просто TGA.

...