社区
游戏开发
帖子详情
谁能告诉我为什么纹理只能是A8R8G8B8色彩模式呢?
lyzcom
2003-10-15 11:19:17
不管是16位色还是32位色,不管BackBufferFormat是什么模式的,
纹理总是只能是A8R8G8B8的色彩模式,否则,载入的BMP图片就是一团花。而我可以保证各种模式的色彩运算方法是绝对正确的。奇怪的就是纹理只能用A8R8G8B8,不管是16位色还是32位色。
...全文
650
17
打赏
收藏
谁能告诉我为什么纹理只能是A8R8G8B8色彩模式呢?
不管是16位色还是32位色,不管BackBufferFormat是什么模式的, 纹理总是只能是A8R8G8B8的色彩模式,否则,载入的BMP图片就是一团花。而我可以保证各种模式的色彩运算方法是绝对正确的。奇怪的就是纹理只能用A8R8G8B8,不管是16位色还是32位色。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lyzcom
2003-10-20
打赏
举报
回复
还有没有人知道解决方法呢?
lyzcom
2003-10-20
打赏
举报
回复
还有,如何在DX8中设定读取纹理数据时按照16位的方式读取呢?
lyzcom
2003-10-20
打赏
举报
回复
纹理的大小是绝对为2的N次方,我测试时使用的是256和512两种情况。
但是,这个宽度似乎和纹理颜色模式没有关系。如果DX8确实是按照32位的方式读取纹理数据的话,那么就真的会有问题了。难道只有DX9才不会有这个问题吗?
YangLin1ST
2003-10-20
打赏
举报
回复
我这一般还是自己操作纹理的时候,数据没有对齐的原因,由于DX中纹理必须是2的整数背,你创建好纹理的时候重新检查一下他的大小是不是你想要的DX 8里确实有一些BUG,如果需要你可以自己动手跳过他的操作的
lyzcom
2003-10-19
打赏
举报
回复
不可能,我的两台电脑,一台GF2Pro显卡,一台ATI9800显卡,毛病都一样。显卡驱动我早就升级到了最新。
key_lord
2003-10-19
打赏
举报
回复
更新显卡驱动。
lyzcom
2003-10-19
打赏
举报
回复
是吗?那这个问题很严重啊!!有没有好的解决办法呢?各位朋友都帮我想想吧。有谁知道解决办法的。
linyizsh
2003-10-19
打赏
举报
回复
不好!果然是这样,刚才找了个dx8的代码试了一下,在我的显卡上A4R4G4B4和R5G6B5纹理都是一片白色。但在dx9中则正常。
linyizsh
2003-10-19
打赏
举报
回复
dx9中没问题,我经常用。
难道dx8跟dx9纹理加载方式有所不同?
akun
2003-10-17
打赏
举报
回复
奇怪啊~~
代码贴出来看看~
lyzcom
2003-10-17
打赏
举报
回复
代码太多了,没法贴。
只是我觉得tomb4(nicky_hu)说得非常有道理。
但是我却从来没有听说过DX8的这个设置在哪里有?哪里有呢?哪位兄台知道的?
KingofMagic
2003-10-16
打赏
举报
回复
A8R8G8B8与你的bmp文件有关
你的bmp是32位的
akun
2003-10-16
打赏
举报
回复
这个应该和硬件有关系,要不你换一个比较新的显卡测试一下~
tomb4
2003-10-16
打赏
举报
回复
to lyzcom(初学者) :
其实应该是一样的.你说载入的BMP图片就是一团花就是没有设置正确的byte alignment.
API 从MEMORY读/写数据是基于ROW的,如果BYTE ALIGNMENT是4(默认对于32位机)那么读A4R4G4B4与R5G6B5时如果ROW不是4BYTE的倍数,就会在尾部跳过2个字节,从而造成图象一团花(如果你不PAD的话).
DX应该有这个设置把
lyzcom
2003-10-16
打赏
举报
回复
我用的是DX8,不是OpenGL。
tomb4
2003-10-16
打赏
举报
回复
to lyzcom(初学者) :
不知你用的是什么API.你试试改一下unpack_alignment(OPENGL默认为4)
改成2(对于A4R4G4B4与R5G6B5);
hope helps
lyzcom
2003-10-16
打赏
举报
回复
不是啊,我在读BMP的时候,可以根据纹理的色彩模式对颜色进行转换啊。这一点绝对没有问题的。
而我的显卡我也测试过了,对于A8R8G8B8,A4R4G4B4,R5G6B5都支持。但是做为纹理的应用,只有A8R8G8B8目前我使用成功了。按道理说,其它的使用都是一样的,只要注意写入纹理数据的时候按照颜色格式写就行了。我都照做了啊。但还是不行。
DX
纹理
像素格式转换算法 R10G10B10A2 转 R8G8B8A8
DXGI_FORMAT_R10G10B10A2_UNORM 和 DXGI_FORMAT_R8G8B8A8_UNORM 1个像素都是32位整数表示,只是位数不一样。
个人理解的
纹理
压缩
常用的
纹理
格式有R5G6B5,A4R4G4B4,A1R5G5B5,R8G8B8,
A8R8G8B8
等。 文件格式是图像为了存储信息而使用的对信息的特殊编码方式,它存储在磁盘中,或者内存中,但是并不能被GPU所识别,因为以向量计算见长的G
DXGI_FORMAT_R10G10B10A2_UNORM DXGI_FORMAT_R8G8B8A8_UNORM 转换
// xxxxxxxx yyyyyyyy zzzzzzzz wwwwwwww DXGI_FORMAT_R8G8B8A8_UNORM // RRRRRRRR RRGGGGGG GGGGBBBB BBBBBBAA DXGI_FORMAT_R10G10B10A2_UNORM int r = x << 2 | y >> 6; int g ...
Direct3D9和DirectDshow的RGB位图
对于Direct3D9的D3DFMT_
A8R8G8B8
纹理
: 按照字节顺序,每个像素的组成是:B1,G1,R1,A1,B2,G2,R2,A2 。。。 对应PShader的float4的话,R对应X,G对应Y,B对应Z,A对应W 对于Direct3D9的D3DFMT_...
DirectX12
纹理
格式
DirectX12
纹理
格式
游戏开发
8,305
社区成员
23,682
社区内容
发帖
与我相关
我的任务
游戏开发
游戏开发相关内容讨论专区
复制链接
扫一扫
分享
社区描述
游戏开发相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章