游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2275|回复: 1

自动纹理坐标产生的奇怪问题

[复制链接]

1

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2008-6-5 18:28:00 | 显示全部楼层 |阅读模式
以下的代码能产生期望的输出:
glBegin(GL_QUADS);
  glTexCoord3f(0,0,1);glVertex4f(-0.5,-0.5,0.5,1.0);
  glTexCoord3f(0,1.0,1);glVertex4f(0.5,-0.5,0.5,1.0);
  glTexCoord3f(1.0,1.0,1);glVertex4f(0.5,0.5,0.5,1.0);
  glTexCoord3f(1.0,0,1);glVertex4f(-0.5,0.5,0.5,1.0);
glEnd();
但换成以下这段利用纹理坐标自动产生的代码却不能产生期望输出

  static GLfloat sCoeff[] = {0.0, 1.0, 0.0, 0.5};
  static GLfloat tCoeff[] = {1.0, 0.0, 0.0, 0.5};
  static GLfloat rCoeff[] = {0.0, 0.0, 1.0, 0.5};
  glEnable(GL_TEXTURE_GEN_S);
  glEnable(GL_TEXTURE_GEN_T);
  glEnable(GL_TEXTURE_GEN_R);
  glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
  glTexGenfv(GL_S, GL_OBJECT_PLANE, sCoeff);
  glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
  glTexGenfv(GL_T, GL_OBJECT_PLANE, tCoeff);
  glTexGeni(GL_R, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
  glTexGenfv(GL_R, GL_OBJECT_PLANE, rCoeff);
  glBegin(GL_QUADS);
        glVertex4f(-0.5,-0.5,0.5,1.0);
        glVertex4f(0.5,-0.5,0.5,1.0);
        glVertex4f(0.5,0.5, 0.5,1.0);
        glVertex4f(-0.5,0.5,0.5,1.0);
  glEnd();


但自动纹理坐标发生机制应为四边形的四个顶点产生如第一段代码一样的纹理坐标,但输出却不一样,那位能告诉我为什么。 有办法查看到这四个顶点世纪产生的纹理坐标吗?谢谢


180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2008-7-1 11:52:00 | 显示全部楼层

Re: 自动纹理坐标产生的奇怪问题

glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);//自动生成S文理坐标
glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);//自动生成T文理坐标

不要GL_TEXTURE_GEN_R
贴图坐标是2维的,不需要第三个坐标。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-22 03:01

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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