游戏开发论坛

 找回密码
 立即注册
搜索
查看: 22544|回复: 40

谁搞过OPENGL多线程?效率如何?怎样才能提供效率?小妹

[复制链接]

21

主题

230

帖子

230

积分

中级会员

Rank: 3Rank: 3

积分
230
发表于 2006-6-8 16:50:00 | 显示全部楼层 |阅读模式
我要提高游戏的加载速度。用的是OPENGL.
开始的时候因为论坛上说OPENGL多线程效率不高,说什么RENDERCONTEX的切换,代价很大。所以就用了FIBER,用fiber来自己切换,线程只有一个.加载一些普通的模型还可以。但是如果图片大了他就卡。 VB什么的我还没有测试。因为是在游戏运行的时候加载的,所以只要超过100毫秒就会觉得卡。可opengl处理一张图片就要那么多。其他还好说。


想用多线程了。但是我不知道多线程对性能影响多大。大家介绍一下。
可。 [em17]

21

主题

230

帖子

230

积分

中级会员

Rank: 3Rank: 3

积分
230
 楼主| 发表于 2006-6-8 16:58:00 | 显示全部楼层

Re: 谁搞过OPENGL多线程?效率如何?怎样才能提供效率?

妈的,其实我哪里是来提问的。其实是想听到有人说
“opengl 用多线程加载效率还是很高的” ^_^

8

主题

122

帖子

122

积分

注册会员

Rank: 2

积分
122
发表于 2006-6-8 18:02:00 | 显示全部楼层

Re:谁搞过OPENGL多线程?效率如何?怎样才能提供效率?小

-________- !

这年头做游戏还有不用多线程的吗?

21

主题

230

帖子

230

积分

中级会员

Rank: 3Rank: 3

积分
230
 楼主| 发表于 2006-6-8 18:18:00 | 显示全部楼层

Re:谁搞过OPENGL多线程?效率如何?怎样才能提供效率?小

为什么gltex搞个图片要100MS?1024x1024,1024x512.

7

主题

438

帖子

438

积分

中级会员

Rank: 3Rank: 3

积分
438
发表于 2006-6-8 19:32:00 | 显示全部楼层

Re:谁搞过OPENGL多线程?效率如何?怎样才能提供效率?小

显卡处理材质纹理是很费时间的,现在的民用显卡一秒钟也就处理十几张而已。而且1024x1024的纹理光是传输时间就很惊人了。

另外,你要真是女孩裸体跪求,跟我视频让我证实一下,我就给你多线程载入的代码。

21

主题

230

帖子

230

积分

中级会员

Rank: 3Rank: 3

积分
230
 楼主| 发表于 2006-6-9 09:06:00 | 显示全部楼层

Re:谁搞过OPENGL多线程?效率如何?怎样才能提供效率?小

真得慢啊。小眉就得另外想办法了。要么就看看能不能加速下载,要么就多线程,一个线程上,一个线程渲染。不过这个不好。想想都不好。还是一个线程专门处理OPENGL,但是这样还是会卡。。。。

老大 你看清标题没有,我是问效率怎么样,没说要代码,小美可是黄花闺女,哪能随便就能看的

7

主题

438

帖子

438

积分

中级会员

Rank: 3Rank: 3

积分
438
发表于 2006-6-9 09:36:00 | 显示全部楼层

Re:谁搞过OPENGL多线程?效率如何?怎样才能提供效率?小

小霉,你看清楚回复好不好。有代码不就能自己试了么?我空口说,你能相信么?就好比你说自己是黄花闺女,却没有视频展示那层薄膜,有人相信么?

21

主题

230

帖子

230

积分

中级会员

Rank: 3Rank: 3

积分
230
 楼主| 发表于 2006-6-9 17:01:00 | 显示全部楼层

Re:谁搞过OPENGL多线程?效率如何?怎样才能提供效率?小

显卡处理材质纹理是很费时间的,现在的民用显卡一秒钟也就处理十几张而已。而且1024x1024的纹理光是传输时间就很惊人了。"而且1024x1024的纹理光是传输时间就很惊人了"

你骗小孩啊。花花公子一个

Performance Impact of Using Non-Optimal
Texture Formats using an AMD64 Athlon 3500+,
1 GB of RAM, using an nForce4 chipset. A
1024x1024 texture is used for measuring transfer
Readback FX8RGBA FX8BGRA FP16RGBA FP16BGRA FP32RGBA FP32BGRA
。。。。。
Download
GeForce
6800 Ultra
480 MB/s 1596 MB/s 1583 MB/s 490 MB/s 1734 MB/s 480 MB/s
GeForce
7800 GT
483 MB/s 2238 MB/s 1987 MB/s 527 MB/s 2367 MB/s 525 MB/s
Quadro FX
4400
471 MB/s 2167 MB/s 2157 MB/s 503 MB/s 2237 MB/s 463 MB/s
Quadro FX
4500
490 MB/s 2605 MB/s 2613 MB/s 493 MB/s 2689 MB/s 527 MB/s

21

主题

230

帖子

230

积分

中级会员

Rank: 3Rank: 3

积分
230
 楼主| 发表于 2006-6-9 17:31:00 | 显示全部楼层

Re:谁搞过OPENGL多线程?效率如何?怎样才能提供效率?小

        glGenTextures(100, tList);
        //glPrioritizeTextures(7, tList, priorities);

        char *pdata = new char[4*1024*1024];


        unsigned hua = GetTickCount();

        for( unsigned i=0;i<100;++i)
        {

        glBindTexture(GL_TEXTURE_2D, tList);
                // Set Texture mapping parameters
                glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S, GL_REPEAT);
                glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T, GL_REPEAT);
                glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER, GL_LINEAR);
                glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexImage2D(GL_TEXTURE_2D, 0, 3, 1024, 512, 0,
                 GL_BGR_EXT, GL_UNSIGNED_BYTE, pdata);
        }
        glBindTexture(GL_TEXTURE_2D,0);
        GLboolean bb[100];
        bool o = glAreTexturesResident(100, tList, bb);


        char uo[100];
        sprintf(uo,"%d,%d",GetTickCount()-hua,o);
        MessageBox(NULL,uo,"o",MB_OK);

最后返回是 500,1.就是所有的材质都传上去了,1024x512x3x100=150m.哪里是10张就受不了

21

主题

230

帖子

230

积分

中级会员

Rank: 3Rank: 3

积分
230
 楼主| 发表于 2006-6-9 18:05:00 | 显示全部楼层

Re:谁搞过OPENGL多线程?效率如何?怎样才能提供效率?小

我测试了一下。不太准确。400-600。之间。有些格式慢些。要转换的慢些。而且好像rgb的比rgba的更慢。

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

本版积分规则

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

GMT+8, 2026-1-24 19:21

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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