我要做的是创建易于加载和使用的自定义模型和纹理文件。基本上,这些文件是代表 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);
我已经按照 OpenGl 官方网页上的指南将宽度和高度设为 2^n + 2,但考虑到我尝试构建浮点数组的方式,我不确定这是否正确。
我还尝试调用 glGetError() 没有成功(也就是说,没有引发错误,我确保可以通过将宽度和高度设置为 -1 来引发错误)。
我已确保在调用 glBegin() 之前绑定了纹理,甚至检查了这些调用是否有错误无济于事。
任何建议/指针?有没有其他人尝试过定义自己的纹理格式?
顺便说一句,目前正在使用四边形而不是三角形,这很好,对吧?