游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3859|回复: 2

关于OpenGL纹理(GL_ALPHA)

[复制链接]

7

主题

10

帖子

12

积分

新手上路

Rank: 1

积分
12
QQ
发表于 2005-6-15 02:17:00 | 显示全部楼层 |阅读模式
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,渲染出来的是一个黑色的方块。不明白其因,一时也找不到相关的例程,希望这里的高人指导一二,在下不胜感激!

7

主题

10

帖子

12

积分

新手上路

Rank: 1

积分
12
QQ
 楼主| 发表于 2005-6-16 10:06:00 | 显示全部楼层

Re: 关于OpenGL纹理(GL_ALPHA)

在google上搜索了半天,发现了问题的答案,我以前看过的文章里,只是提起单色纹理格式,以及“颜色数”那里只能填数字:
    glTexImage2D(GL_TEXTURE_2D, 0,
        1,//颜色数
        256, 256, 0,
        GL_ALPHA,//像素格式
        GL_UNSIGNED_BYTE, &data[0][0]);
如果像素模式为GL_ALPHA, “颜色数”(具体术语忘了)那里填GL_ALPHA8就可以实现只含有Alpha信息的纹理了。
    如果像素格式为GL_RED, GL_GREEN, GL_BLUE, 颜色数那里填GL_RGB就可以实现单色的纹理了。

190

主题

1801

帖子

2096

积分

金牌会员

Rank: 6Rank: 6

积分
2096
QQ
发表于 2005-6-16 11:36:00 | 显示全部楼层

Re:关于OpenGL纹理(GL_ALPHA)

GOOD!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-26 00:39

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表