游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5201|回复: 17

有几个问题想问问大家!

[复制链接]

13

主题

39

帖子

39

积分

注册会员

Rank: 2

积分
39
发表于 2006-8-7 16:32:00 | 显示全部楼层 |阅读模式
你们在编制程序是用的是什么样的显卡?
另,我在WinXp系统下编制的多线程的程序,却不能够使用OpenGL双缓冲。我的程序大概没2毫秒执行一次绘制,而此时交换缓冲(SwapBuffer())就来不及。不知道是我硬件的问题,还是本身OpenGL就不太适合做高精确的实时渲染?

8

主题

182

帖子

268

积分

中级会员

Rank: 3Rank: 3

积分
268
发表于 2006-8-7 17:39:00 | 显示全部楼层

Re:有几个问题想问问大家!

2毫秒执行一次绘制?一秒500多帧?一般显卡顶不住吧

3

主题

12

帖子

68

积分

注册会员

Rank: 2

积分
68
发表于 2006-8-7 19:02:00 | 显示全部楼层

Re: 有几个问题想问问大家!

同觉得……太快了吧。

13

主题

39

帖子

39

积分

注册会员

Rank: 2

积分
39
 楼主| 发表于 2006-8-7 20:42:00 | 显示全部楼层

Re:有几个问题想问问大家!

所以我现在就只能使用单缓冲来实现。
但是我不太清楚,假设我现在用如下的东西:
glBegin(GL_BLEND);
glBlendFunc();
...
glEnd();
屏幕分辨率为1600*1200上面代码表示:我使用一个与屏幕相同大小的矩形与屏幕缓冲融合一次,不知道这个操作是怎么样完成的。从cpu到显卡!

13

主题

39

帖子

39

积分

注册会员

Rank: 2

积分
39
 楼主| 发表于 2006-8-7 20:46:00 | 显示全部楼层

Re:有几个问题想问问大家!

就是说,假设我每次融合,是不是讲所有数据及命令全都一次发给GPU,GPU操作后给显存,显存然后再给显示器处理。
还是,融合一次只是cpu发送一条命令(融合的命令),然后直接GPU进行操作,GPU完成绘制到现实的功能。

13

主题

39

帖子

39

积分

注册会员

Rank: 2

积分
39
 楼主| 发表于 2006-8-7 22:20:00 | 显示全部楼层

Re:有几个问题想问问大家!

我2ms一次绘制只是绘制一条直线,也可以说是绘一个方向上的一些点。并不是整个屏幕均绘制。

41

主题

184

帖子

184

积分

注册会员

Rank: 2

积分
184
发表于 2006-8-7 23:07:00 | 显示全部楼层

Re:有几个问题想问问大家!

GPU直接进行混合操作

2ms太快了,你的屏幕分辨率太高了。

如果没秒500帧,你的分辨率1600*1200,每个象素4个字节,则你的像素传输率为3.6G 字节每秒,你可以查一下显卡的说明,如果能支持这么大的像素传输率,则可以使用。

现在Nvedio的 Geforce7800理论速率为4G,可以满足你的要求,准备好钱吧,哦,主板,CPU最好也换一下

5

主题

686

帖子

697

积分

高级会员

Rank: 4

积分
697
QQ
发表于 2006-8-9 19:48:00 | 显示全部楼层

Re:有几个问题想问问大家!

LS的计算有问题,以6600GT为例,显存频率1Ghz,显存带宽128bit,合16Bytes,理论峰值显存带宽是16GBytes/s,每幅画面1600*1200*4个字节,按峰值来算的话每秒可以传输2083帧
7800显存带宽256bit,可以上到4166帧

13

主题

39

帖子

39

积分

注册会员

Rank: 2

积分
39
 楼主| 发表于 2006-8-9 20:47:00 | 显示全部楼层

Re:有几个问题想问问大家!

谢谢大家的热心帮忙。我还是有些疑问?
第一,假设我只改变了屏幕的一些数据,如在屏幕上绘制了一个点,相对应的是显存的一部分区域。那么是不是整个屏幕的像素都需要重新传输一遍?还是只传输改变了的显存区域。
第二,融合操作(ogl)是不是由显卡完成,而cpu不需要计算?
第三,我在Geforce fx 5200中实现了,我上面所描述的情况。因为我的显卡是AGP8x的,因此我计算了一下,如果每次都是由cpu将屏幕数据传给显卡(大约是7m多数据),再显示的话,显然是满足不了我的要求,但实际cpu利用率非常低,而且效果已达到。(我使用的是单缓冲),那么是否说明cpu在绘制的过程中只是发送了命令,而实际绘制工作是由显卡完成的。
第四,如果,我计算没有问题的话,gpu------v ram-----RAMDAC,如果每针均传送7.68m(1600*1200*4)的话,我的显卡不能够在2ms中完成任务。
我想问问各位大大,谁能够解释上面的问题。还有就是显卡的工作原理是怎样的?
万分感谢!

41

主题

184

帖子

184

积分

注册会员

Rank: 2

积分
184
发表于 2006-8-10 00:25:00 | 显示全部楼层

Re:有几个问题想问问大家!

1、你需要理解,显卡中有一块显存用来保存你当前绘制的图像,一旦绘制完成它把这块显存变换为 帧缓存中,显示器从帧缓存中读取数据显示。显卡的像素填充率是指从帧缓存读取数据的速度。
好了,我现在回答你的问题,如果你改变了屏幕上的一点,那么就需要改变显存中某一块数据的值,其它的不变。接着把这块显存变换为帧缓存,接着显示器读取数据,像素填充率,决定了你理论上的最大刷新率。
2、是的,如果你的显卡足够好,ATI9600以上
3、AGP8x指的是从内存到显存的速度,在OpenGL下7m的数据,系统会帮你存在显存里。cpu调用GPU的函数完成相应的功能。
4、看懂了上面再算吧:)

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

本版积分规则

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

GMT+8, 2026-1-25 03:44

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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