游戏开发论坛

 找回密码
 立即注册
搜索
楼主: 雨落寒星

为什么我的OpenGL的fps这么少?

[复制链接]

50

主题

244

帖子

319

积分

中级会员

Rank: 3Rank: 3

积分
319
QQ
 楼主| 发表于 2005-10-20 12:26:00 | 显示全部楼层

Re:为什么我的OpenGL的fps这么少?

请问snhun:好像我的程序是一个劲的刷新的,就是在绘制完所有图片后直接交换缓存(整个显示过程的最后)。请问还有什么更好的方法避免这个吗?

50

主题

244

帖子

319

积分

中级会员

Rank: 3Rank: 3

积分
319
QQ
 楼主| 发表于 2005-10-20 13:02:00 | 显示全部楼层

Re:为什么我的OpenGL的fps这么少?

测试了下,在我们公司的电脑上可以达到30fps(:(未装显卡驱动,日文的,装了好多次都装不上)
我自己的在上面测试只有11fps左右,在我自己的电脑上可以达到60多,估计你的程序在我的电脑上可以到100多(没办法,配置太差了)

可以请教下4边形映射到3角形上有什么好办法吗?

2万

主题

2万

帖子

6万

积分

论坛元老

Rank: 8Rank: 8

积分
66489
QQ
发表于 2005-10-20 13:10:00 | 显示全部楼层

Re:为什么我的OpenGL的fps这么少?

你直接画四边形就好了!
GL_QUADS

50

主题

244

帖子

319

积分

中级会员

Rank: 3Rank: 3

积分
319
QQ
 楼主| 发表于 2005-10-21 08:35:00 | 显示全部楼层

Re:为什么我的OpenGL的fps这么少?

不好意思,是我提问的表达不对,现在怎么映射到3角形上我已经明白了,我想请教下如果要用glDrawArray等批处理函数,那么纹理映射部分应该怎么做啊?
例如说以前我绘制一张图片,就是把一个纹理绑定到一个矩形上,即先绑定纹理,然后绘制4边形。可是如果用了批处理命令,纹理绑定这部分应该在哪实现呢?

2万

主题

2万

帖子

6万

积分

论坛元老

Rank: 8Rank: 8

积分
66489
QQ
发表于 2005-10-21 09:19:00 | 显示全部楼层

Re:为什么我的OpenGL的fps这么少?

一样的,先绑定纹理,再调用glDrawArray

50

主题

244

帖子

319

积分

中级会员

Rank: 3Rank: 3

积分
319
QQ
 楼主| 发表于 2005-10-21 12:39:00 | 显示全部楼层

Re:为什么我的OpenGL的fps这么少?

如果纹理是多个呢?并且是分别绑定到不同的三角形上……
越说我越模糊了,可以给点代码片断吗?

2万

主题

2万

帖子

6万

积分

论坛元老

Rank: 8Rank: 8

积分
66489
QQ
发表于 2005-10-21 12:55:00 | 显示全部楼层

Re:为什么我的OpenGL的fps这么少?

问题就是不能!不管是D3D还是OpenGL都不可以!
就算是用多贴图技术,也必须分开多次调用glDrawArray

所以我说2D会比3D更慢的可能性存在,原因就是2D太费贴图了。

50

主题

244

帖子

319

积分

中级会员

Rank: 3Rank: 3

积分
319
QQ
 楼主| 发表于 2005-10-21 13:46:00 | 显示全部楼层

Re:为什么我的OpenGL的fps这么少?

:)原来你的意思就是,如果贴图比较大的话,那么把这个纹理分成多个小山角形,而实质上还是在一个四边形上绑定了一个纹理,只是这个四边形是分成多个三角形绘制的,是不是这个意思呢?
可是我又有个疑问:3D中是怎么进行纹理映射的?一个模型不是也有很多面吗?难道这些面的贴图不是通过纹理映射的方式贴上去的?

2万

主题

2万

帖子

6万

积分

论坛元老

Rank: 8Rank: 8

积分
66489
QQ
发表于 2005-10-21 14:55:00 | 显示全部楼层

Re:为什么我的OpenGL的fps这么少?

2D游戏上大部分图片需要原样精度显示,即图片的一个点对应屏幕的一个点。而3D游戏则大部分情况下不需要这样。

而且现在大部分显卡都有贴图2次幂限制,所以很多时候又必须将图片拆成多个符合2次幂的图片来显示。

而在nVidia芯片上,频繁更换贴图将严重影响效率,ATI芯片上影响小。而在2D游戏中这又无法避免,当然在GUI中可以将很多图片做在一张贴图上。

你可以看一些3D游戏的贴图,它们是经常将一个人物所需要的所有贴图都做在一张大贴图上的。而这些贴图都符合2的幂尺寸。

50

主题

244

帖子

319

积分

中级会员

Rank: 3Rank: 3

积分
319
QQ
 楼主| 发表于 2005-10-21 18:12:00 | 显示全部楼层

Re:为什么我的OpenGL的fps这么少?

:)太谢谢了,看完你上面这些话,我突然想到了部分原理了,即是说如果不是贴很大的图片的话,是可以只绑定一次纹理的,只是指定纹理坐标而已。呵呵,我以前想的问题都太死板了。

对了,为什么书上有介绍纹理坐标可以用整形表示(即真实纹理坐标),但是我我用整形的实现起来始终不是想象中的效果呢?是不是有什么地方需要设置,还是根本都是我理解错误呢?

这是书上的原话,而且我看见好多书上都是这么写的,但是我都不太理解这句话.

使用适当的后缀(s,i,f或d)和TYPE的相应值(GLshort、GLint、glfloat或GLdouble)来说明坐标的类型。注意:整型纹理坐标可以直接应用,而不是象普通坐标那样被映射到[-1, 1]之间。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-22 10:20

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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