Я пытаюсь создать пользовательские файлы моделей и текстур, которые легко загружать и использовать.В основном файлы представляют собой списки с плавающей точкой, представляющие значения XYZ и RGB.Например: 0,5 0,234 0,1 ... ...
Проблема в том, что я не могу заставить мой массив с плавающей точкой работать на текстуру.Вот как я определяю свой массив:
float* textureMap;
Вот как я его инициализирую:
const int SIZE = (128*128*3);
textureMap = (float*)malloc(sizeof(textureMap)*SIZE);
for (int i =0; i<SIZE; i++) {
textureMap[i] = 0.0f;
}
Теперь, используя Glut, я создал окно, которое позволяет мне рисовать и заполнять массив данными, и, как вы можете видеть, все значения RGB были инициализированы в 0.0fтак что я бы по крайней мере ожидал увидеть мой объект черным, но он просто остается серым цветом по умолчанию и никогда не станет таким же, как в моем массиве текстур.
Вот мой вызов для создания текстуры:
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 130, 130, 0, GL_RGB, GL_FLOAT, textureMap);
Я установил ширину и высоту 2 ^ n + 2 согласно рекомендациям на официальной веб-странице OpenGl, хотя я не уверен, что это правильно, учитывая то, как я пытаюсь построить своймассив с плавающей точкой.
Я также попытался вызвать glGetError () безуспешно (то есть, никаких ошибок не было, и я гарантировал, что могу генерировать ошибки, установив ширину и высоту в -1).
Я убедился, что привязываю текстуру перед моим вызовом.o glBegin () и даже проверил эти вызовы на наличие ошибок, но безрезультатно.
Есть предложения / указатели?Кто-нибудь еще пытался определить свои собственные форматы текстур раньше?
Кстати, я сейчас использую квадраты вместо треугольников, это нормально, верно?