游戏开发论坛

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

[求助]我想了解一下 颜色运用 的知识

[复制链接]

24

主题

94

帖子

96

积分

注册会员

Rank: 2

积分
96
发表于 2005-7-13 10:40:00 | 显示全部楼层 |阅读模式
手头上有一张纹理,基本色调为红色,我想是不是有办法在DIRECT3D里面进行颜色运算,然后可以通过指定一个变量进行查找??

但是我不是很明白究竟怎么调整的,目前怀疑应该是和:
m_pd3dDevice->SetTexture( 0, m_pTexture );
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_ADD);

这些相关,然后通过指定不同的参数可以调节不同的颜色
但是我不知道应该使用哪个参数,怎么调整- -,手头的书基本只是一个概述,比如读取一张纹理,比如用哪些会有什么效果,但是没有具体涉及到某一个颜色

如果真的可以变色这样可以少加载一些纹理了是不是?

请知道的朋友不吝赐教哦 [em3] [em5]

64

主题

855

帖子

856

积分

高级会员

Rank: 4

积分
856
QQ
发表于 2005-7-13 16:17:00 | 显示全部楼层

Re:[求助]我想了解一下 颜色运用 的知识

http://dev.gameres.com/Program/Visual/3D/TexAndTex.htm
http://dev.gameres.com/Program/Visual/3D/muitexture.htm

2

主题

177

帖子

177

积分

注册会员

Rank: 2

积分
177
发表于 2005-7-13 16:33:00 | 显示全部楼层

Re: [求助]我想了解一下 颜色运用 的知识

littlewater: [求助]我想了解一下 颜色运用 的知识

手头上有一张纹理,基本色调为红色,我想是不是有办法在DIRECT3D里面进行颜色运算,然后可以通过指定一个变...


我最近的工作都是和GPU图像处理相关的,但不明白你的意思
你的意思是想对一张纹理的各个颜色通道分别进行操作还是……???

基本上得用pixel shader

24

主题

94

帖子

96

积分

注册会员

Rank: 2

积分
96
 楼主| 发表于 2005-7-14 10:31:00 | 显示全部楼层

Re:[求助]我想了解一下 颜色运用 的知识

举个我想象中的方案:

一块固定颜色,假设现在是红色的的板(quad)现在我想通过函数设定,传入参数BLUE那么就是让它变成蓝色的,如果是传入参数RED那么就是显示红色的,就这样,

只是为了少读入几张纹理的方法而已,而且手工转换颜色似乎挺难的毕竟即使红色也有很多种(粉红大红微红...不懂的多)

你的意思是想对一张纹理的各个颜色通道分别进行操作还是……???
大概就素这个意思

PS谢谢2楼的网址,我马上就去看看^^

2

主题

177

帖子

177

积分

注册会员

Rank: 2

积分
177
发表于 2005-7-14 11:06:00 | 显示全部楼层

Re:[求助]我想了解一下 颜色运用 的知识

用Pixel Shader是肯定可以
看了看DX9SDK,另一种方法应该也可以,在Texture Stage中设置此Stage返回的颜色为常量
pD3DDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
pD3DDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTOP_CONSTANT);                                                   pD3DDevice->SetTextureStageState(0, D3DTSS_CONSTANT,
/*Your color here*/);

这种方法我没用过,但应该可以

63

主题

871

帖子

891

积分

高级会员

Rank: 4

积分
891
QQ
发表于 2005-7-14 12:51:00 | 显示全部楼层

Re:[求助]我想了解一下 颜色运用 的知识

贴图用灰度图,,然后用顶点的Diffuse来乘

SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);
SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_MODULATE);

也可以用楼上的常数

如果用PS就方便多了,,可以直接用彩图算出灰度来,,不过。。。。。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-26 10:06

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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