游戏开发论坛

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

纹理和光照的混合

[复制链接]

2

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2009-7-10 13:29:00 | 显示全部楼层 |阅读模式
在OpenGL中加入光照,同时又贴上纹理,那像素的颜色怎么确定啊?还有,我画一个黑色的正方形,然后在上面贴图,但是运行结果是一片黑,看不到纹理。怎么回事?哪位大虾跟我讲讲纹理的控制啊 ?

6

主题

379

帖子

379

积分

中级会员

Rank: 3Rank: 3

积分
379
QQ
发表于 2009-7-11 07:46:00 | 显示全部楼层

Re:纹理和光照的混合

我不知道,有人知道吗?

---------------------------------------------------------------------------------------
执行细节讨论QQ群:63773780  带专长验证:Excel Visio PS Lua RPGmaker……入门-进阶-熟练-精通

0

主题

3

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2009-7-11 16:54:00 | 显示全部楼层

Re:纹理和光照的混合

依然一片漆黑有很多种原因,但是这个问题和标题关系模糊。
造成一片漆黑有可能有以下情况:
1,确定GL_MODELVIEW和GL_PROJECT矩阵或者矩形坐标是否设置正确,即矩形是否可见。如果设置错误,即使你其他都设置正确,画的东西很可能在屏幕外面,看不见自然正常。你可以把矩形设成其它颜色达到检测目的。
2,确定启用了纹理,纹理创建正确,坐标设置正确,在创建纹理后,调用glGetError看下又没有错来检验。
3,确定纹理的配置是否正确,如果你前面都没问题,画不出来东东,那么这里要好好检查下。一般来说,纹理创建后都会做如下几个设置,1)纹理的过滤方式(最近点还是线性插值,对于使用了MIPMAP的纹理,还有更多的设置),2)纹理坐标大于1的时候的显示方式(拉伸还是重复),3)纹理与原顶点颜色的混合方式(覆盖,贴花,调整,融合)。
如果你只是为了显示出一个图片的话,并且矩形大小和纹理大小一样,用如下设置即可:
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S, GL_CLAMP); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T, GL_CLAMP);
glTexEnvf(GL_TEXTURE_2D,GL_TEXTURE_EVN_MODE,GL_REPLACE);  
就可以了。
函数的意义和参数意义请参照opengl的文档,篇目有限,不列了。如果没启用光照,那么相关检查就到此为止了。
光照和纹理设置没有关系。初步估计,你应该是没设置正确的纹理与原顶点颜色的混合方式。如果使用默认的,那就是“调整”方式,你顶点颜色黑的,不做其他设置,再怎么“调”也是黑的。你设置成白色如果能看到纹理的话自然就是这个问题了.
至于你的标题,纹理和光照的混合- -!纹理和光照都对最后片元产生影响。但是是2个步骤。在设置了光源后,顶点的法向量会影响顶点颜色,在光栅化后,多边形内部的颜色自然会受到光照的影响。就比如说你一件白衣服在红光下照射,白衣服上面所有白色顶点都受到了红光的影响。处理完后是红色顶点。然后你的白衣服上面有花纹,好比使用了纹理。这时候片元(就是屏幕上最后的像素)颜色是红色了,而不是白色,经过和纹理的处理后得到最后的颜色。你设置替换,碰巧纹理是朵黄菊,那么最后结果就是红衣黄菊。设置了调整或者融合,那可能就是朵橙菊。具体橙到什么程度,和你菊花黄到什么程度以及是调整还是融合有关 =,-!

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

本版积分规则

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

GMT+8, 2025-12-19 19:50

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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