|
|
GLuint MakeTexture()
{
GLuint tex;
const int tw = 256;
const int th = 256;
BYTE data[tw][th] = {0};
for(int i = 0;i<th;++i){
for(int j = 0;j<tw;++j){
data[j] = j;
}
}
glGenTextures(1,&tex);
glBindTexture(GL_TEXTURE_2D,tex);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0,
1,//颜色数
256, 256, 0,
GL_ALPHA,//像素格式
GL_UNSIGNED_BYTE, &data[0][0]);
return tex;
}
//调用:
GLuint tex = MakeTexture();
if(tex)glBindTexture(GL_TEXTURE_2D, tex);
DrawRect(0.0f, 0.0f, 1.0f, 1.0f);
本人的本意是创建一个只带有alpha信息的纹理,纹理颜色由glColor*设置,但是本人发现只有像素格式为GL_RED的时候,可以渲染出带颜色的图形,不过颜色也是怪怪的(渐变的灰色方块)。至于其他的GL_GREEN, GL_BLUE, GL_ALPHA,渲染出来的是一个黑色的方块。不明白其因,一时也找不到相关的例程,希望这里的高人指导一二,在下不胜感激! |
|