游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3340|回复: 6

请教:OpenGL的纹理映射和D3D是反的......

[复制链接]

34

主题

70

帖子

76

积分

注册会员

Rank: 2

积分
76
发表于 2008-5-24 14:26:00 | 显示全部楼层 |阅读模式
    我想做一个底层渲染引擎的抽象层,让程序可以在D3D和OpenGL的渲染中互换.但是发现问题是D3D中的纹理和OpenGL中是反的.请教应该如何调整?

29

主题

157

帖子

163

积分

注册会员

Rank: 2

积分
163
发表于 2008-5-24 17:54:00 | 显示全部楼层

Re:请教:OpenGL的纹理映射和D3D是反的......

OpenGL中利用位图的数据制作纹理的时候,是从下面往上加载的,所以数据就是反的。解决办法之一就是在OpenGL中创建纹理的时候,把像素数据先给垂直翻转过来。

34

主题

70

帖子

76

积分

注册会员

Rank: 2

积分
76
 楼主| 发表于 2008-5-24 23:58:00 | 显示全部楼层

Re:请教:OpenGL的纹理映射和D3D是反的......

没有个函数来调整装载模式么?
多做一次转换浪费CPU时间啊

1

主题

18

帖子

18

积分

新手上路

Rank: 1

积分
18
发表于 2008-5-25 02:41:00 | 显示全部楼层

Re:请教:OpenGL的纹理映射和D3D是反的......

opengl采用的是标准笛卡尔坐标系,原点在左下角,上y+,右x+;
而bitmap和一般图像采用的是设备坐标系,原点左上,下y+,右x+;
这就不难理解为什么opengl纹理是反的了

没有对应函数修改装载模式,不过你可以修改纹理坐标矩阵,如果胆子够大的话.........

34

主题

70

帖子

76

积分

注册会员

Rank: 2

积分
76
 楼主| 发表于 2008-5-26 08:30:00 | 显示全部楼层

Re:请教:OpenGL的纹理映射和D3D是反的......

修改纹理坐标矩阵......
其一是这个矩阵还有他用,其二是如果使用shader那不是全部露馅了......

34

主题

70

帖子

76

积分

注册会员

Rank: 2

积分
76
 楼主| 发表于 2008-5-26 17:55:00 | 显示全部楼层

Re:请教:OpenGL的纹理映射和D3D是反的......

这样比如一个简单的片段shader,里面直接使用了传入的纹理坐标值而没有使用纹理矩阵,那也是有可能的.
毕竟这是渲染API抽象层以外的内容了......

1

主题

18

帖子

18

积分

新手上路

Rank: 1

积分
18
发表于 2008-5-27 01:05:00 | 显示全部楼层

Re:请教:OpenGL的纹理映射和D3D是反的......

纹理加载本就是近乎一次性的操作,何谓浪费CPU。
自己写个加载函数也耗不了多少时间。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-22 09:25

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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