函数如下:
glTexImage2D( GLenum target,
GLint level,
GLint internalformat,
GLsizei width,
GLsizei height,
GLint border,
GLenum format,
GLenum type,
const GLvoid * data); 资料中,24位的RGB图像是这样设置的:
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, imageW, imageH, 0, GL_RGBA, GL_UNSIGNED_BYTE, h_Src);1.我的图像是8位或者16位的灰度图像,应该怎么设置呢?
2.二维纹理的宽和高,要求至少64纹理宽,是什么意思?
具体的你试一下,平时都是用彩色的
或者你干脆转成RGBA的灰度图不就行了
输入的是8位灰度图像,运算时也是8位灰度图像,输出显示时,把8位灰度图像转换成RGBA(就是R,G,B三个通道的值是一样的),最后显示的结果是正确的。但我觉得这样处理还是比较麻烦,如果不想把8位灰度图像转换为RGBA,应该怎么理解以下问题:
void glTexImage2D(GLenum target, GLint level, GLint internalFormat,
GLsizei width, GLsizei height, GLint border,
GLenum format, GLenum type, const GLvoid *texels);
1.GL_LUMINANCE8与GL_LUMINANCE有什么区别,format参数只有GL_LUMINANCE格式,没有GL_LUMINANCE8格式
2.从openGL3.0开始,interformat增加了一些浮点参数,像GL_R16F,GL_R32F,分别表示16位的浮点数据,32位的浮点数据,为什么没有GL_R8F呢,8位浮点怎么表示呢?
3.在《openGL编程指导-第七版》中看到:纹理映射只支持RGBA模式(Keep in mind that texture mapping works only in RGBA mode. Texture
mapping results in color-index mode are undefined)怎么理解呢?