游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3297|回复: 2

关于同一纹理号绑定到不同纹理的问题...

[复制链接]

2

主题

5

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2009-6-25 15:09:00 | 显示全部楼层 |阅读模式
以前一直听说,如果多次使用glGenTextures这个函数的话,可能会出错?不知是不是真的,这是问题一.
第二,对于同一个纹理号,如果去绑定到不同的纹理,会不会出错...就是说先
glTexImage2D(GL_TEXTURE_2D, 0, type, tga->width, tga->height, 0, type, GL_UNSIGNED_BYTE, tga1->imageData);
这样操作一次.然后我不用这个纹理了,但是想再用一次这个纹理号,于是我再次
glTexImage2D(GL_TEXTURE_2D, 0, type, tga->width, tga->height, 0, type, GL_UNSIGNED_BYTE, tga2->imageData);
我想问的是,第二次调用这个函数会不会跟第一次调用,使用的是同一块显存...

0

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2009-6-29 16:28:00 | 显示全部楼层

Re:关于同一纹理号绑定到不同纹理的问题...

多次调用glGenTextures会不会出错我不太清楚

如果要改变的话,有glTexSubImage2D

0

主题

3

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2009-7-11 17:26:00 | 显示全部楼层

Re:关于同一纹理号绑定到不同纹理的问题...

1,多次调用者要看你多到什么程度。每个opengl实现都有一个最大纹理数。超过这个了,自然会出错。扩展里面查询GL_MAX_TEXTURE_UNITS可获取相关平台的信息。一般至少都几K个的。
2,不清楚。最后的结果是绑定的纹理采用的是第2张图片。对于你的问题,如果在同一块区域,自然是会有问题的。(新的比原来大了,那如果数据在显存里面是紧凑排列,自然会覆盖后面的数据出错,新的比原来的小,可能会出现类似内存碎片的情况),那么不在一块区域,老的不自动删除可能会有显存泄漏,如果删除了,那他和glTexSubImage的结果是一样的。不管哪种情况,都不建议对于已经glTexImage2D的纹理再做一次glTexImage2D。如2楼所说,使用glTexSubImage来改变现有纹理让人更明白你所要表达的内容。并且这比删除旧的创建新的要快。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-19 19:48

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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