游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2506|回复: 5

OpenGL高手,请帮我修改

[复制链接]

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2005-11-29 23:24:00 | 显示全部楼层 |阅读模式
现在手是透明的。

怎么才能让手不透明?(而且没有黑框)

先解压缩一下,程序是 Lesson6.exe。

S是左,F是右,E是前进,D是后退。

sf_20051129232345.rar

85.86 KB, 下载次数:

4

主题

15

帖子

17

积分

新手上路

Rank: 1

积分
17
发表于 2005-11-30 17:43:00 | 显示全部楼层

Re:OpenGL高手,请帮我修改

glDisable(GL_BLEND);

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
 楼主| 发表于 2005-11-30 18:53:00 | 显示全部楼层

Re:OpenGL高手,请帮我修改

二位的方法,我都试过。
都不行。
不信,二位可以试试。

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
 楼主| 发表于 2005-12-14 15:15:00 | 显示全部楼层

Re:OpenGL高手,请帮我修改

怎么加 ALPHA图?
用什么语句?
ALPHA图应该用BMP格式吗?

3

主题

11

帖子

17

积分

新手上路

Rank: 1

积分
17
发表于 2005-12-16 15:12:00 | 显示全部楼层

Re:OpenGL高手,请帮我修改

我也是刚学opengl,不过我试着改了一下还可以!
如下:没用你的shou(),直接在你的draw里边贴手纹理,不过另外写个函数也一样!
首先要制作hand.bmp的mask,就是将它的背景改为白色,其他要显示出来的为黑色!
你可以用一些画图软件得到这个遮罩!
然后在场景changjing();后写如下:
        glEnable(GL_BLEND);
        glDisable(GL_DEPTH_TEST);
        glBlendFunc(GL_DST_COLOR,GL_ZERO);
        glBindTexture(GL_TEXTURE_2D, texture[3]);//此为hand.bmp的mask纹理
        glLoadIdentity();
        glTranslatef(0.0f,0.0f,-2.0f);
        glScalef(0.4f,0.4f,0.4f);

        glBegin(GL_QUADS);
        glTexCoord2f(0.0f, 0.0f); glVertex3f(-0.5f, -2.0f, 0.0f);
        glTexCoord2f(1.0f, 0.0f); glVertex3f( 0.5f, -2.0f, 0.0f);
        glTexCoord2f(1.0f, 1.0f); glVertex3f( 0.5f,  0.0f, 0.0f);
        glTexCoord2f(0.0f, 1.0f); glVertex3f(-0.5f,  0.0f, 0.0f);
        glEnd();

        glBlendFunc(GL_ONE, GL_ONE);
        glBindTexture(GL_TEXTURE_2D, texture[1]);//此为hand.bmp的纹理
        glLoadIdentity();
        glTranslatef(0.0f,0.0f,-2.0f);
        glScalef(0.4f,0.4f,0.4f);

        glBegin(GL_QUADS);
        glTexCoord2f(0.0f, 0.0f); glVertex3f(-0.5f, -2.0f, 0.0f);
        glTexCoord2f(1.0f, 0.0f); glVertex3f( 0.5f, -2.0f, 0.0f);
        glTexCoord2f(1.0f, 1.0f); glVertex3f( 0.5f,  0.0f, 0.0f);
        glTexCoord2f(0.0f, 1.0f); glVertex3f(-0.5f,  0.0f, 0.0f);
        glEnd();
        glDisable(GL_BLEND);
        glEnable(GL_DEPTH_TEST);

4

主题

18

帖子

24

积分

注册会员

Rank: 2

积分
24
发表于 2005-12-18 13:55:00 | 显示全部楼层

Re:OpenGL高手,请帮我修改

读bmp文件的时候用
unsigned char *LoadBitmapFileWithAlpha(char *filename, BITMAPINFOHEADER *bitmapInfoHeader)
{
  unsigned char *bitmapImage = LoadBitmapFile(filename, bitmapInfoHeader);
  unsigned char *bitmapWithAlpha = (unsigned char *)malloc(bitmapInfoHeader->biSizeImage * 4 / 3);

  if (bitmapImage == NULL || bitmapWithAlpha == NULL)
    return NULL;

  // loop through the bitmap data
  for (unsigned int src = 0, dst = 0; src < bitmapInfoHeader->biSizeImage; src +=3, dst +=4)
  {
    // if the pixel is black, set the alpha to 0. Otherwise, set it to 255.
    if (bitmapImage[src] == 0 && bitmapImage[src+1] == 0 && bitmapImage[src+2] == 0)
      bitmapWithAlpha[dst+3] = 0;
    else
      bitmapWithAlpha[dst+3] = 0xFF;

    // copy pixel data over
    bitmapWithAlpha[dst] = bitmapImage[src];
    bitmapWithAlpha[dst+1] = bitmapImage[src+1];
    bitmapWithAlpha[dst+2] = bitmapImage[src+2];
  }

  free(bitmapImage);

  return bitmapWithAlpha;
} // end LoadBitmapFileWithAlpha()

唐XX的书上说的!!try 一下
大意就是让黑色部分透明
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-23 00:59

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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