游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3331|回复: 0

opengl绘制模型花屏

[复制链接]

7

主题

13

帖子

17

积分

新手上路

Rank: 1

积分
17
发表于 2009-10-15 23:14:00 | 显示全部楼层 |阅读模式
都没个人回,问题倒是解决了,就是不知道原因。解决方法如下:
glCompressedTexImage2D(*,...,*,0);//最后参数为0,不传输数据
glCompressedsSubTexImage2D();//此时才传输数据。


--------------------------------------------------------------------------------


问题已经明确:
我用dds格式的贴图,dds的文件格式为dxt3,而且纹理数据在内存中仍是压缩状态,然后用函数glCompressedTexImage2D将压缩纹理送到显存。这个过程是由我的加载资源的线程完成的。
绘制的是我另外的一个线程。

难道glCompressedTexImage2D不是现成安全的?或者GeForce 9400 GT的驱动程序6.14.11.9107版本实现的这个函数不是线程安全的?


------------------------------------------------------------------------------

我碰到的情况是这样的:
我的显卡是GeForce 9400 GT,以前用的驱动程序比较低,版本是:6.14.11.7***(后面3位数忘了),此时绘制模型时,贴图正常显示。
当我更新了驱动程序后,更新后驱动程序的版本是:6.14.11.9107,此时用opengl绘制模型会出现花屏。
花屏的具体表现是:人物模型上的一个mesh贴图要不是全黑,要么是五颜六色的,而不是原来的纹理。
但是当我退出程序,然后再启动程序后,人物模型的贴图就正常了。

我使用opengl的情况:
我在windows下使用opengl,用了glew库,使用了opengl扩展。用一个线程负责绘制模型,另外一个线程负责加载模型(包括加载模型的顶点数据,模型需要的纹理贴图)。

现在确定是由于异步加载导致的,因为我改成由一个线程负责加载和绘制就不会出现问题。
难道opengl支持多线程有问题?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-8-6 23:07

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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