Welcome to ZwqXin


3D Graphics、OpenGL、GLSL、C/C++、GameEngine ……

What are you looking for?

留言本

  • quote 22.zbgqx1234
  • 看了博主的文章受益匪浅啊,有个问题想请教一下博主。
    使用glClientActiveTexture函数,程序在调试时出现test.exe 中的 0x00000000 处未处理的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突问题。不知道是怎么个情况。
    我的Opengl的信息
    OpenGL实现厂商的名字:NVIDIA Corporation
    渲染器标识符:GeForce 9600M GT/PCI/SSE2
    OOpenGL实现的版本号:3.2.0
    OGLU工具库版本:1.2.2.0 Microsoft Corporation
    zwqxin 于 2010-8-21 10:24:39 回复
    内存访问出了问题吧,也不一定跟glClientActiveTexture有关。。。没查到明显的内存违规操作的话,注释一些语句运行成功后再加回去看看咯
  • 2010-8-19 21:04:00 回复该留言
  • quote 23.雪浸月
  • 你好,我也是刚接触OpenGL,老师让编写个三维局部放大的代码,N天了也没有弄出来,深感失败,不过你的文章让我对OpenGL产生了强大的兴趣,也深感你的功力不浅,能不能帮下忙啊?谢谢了。
  • 2010-9-1 14:46:10 回复该留言
  • quote 24.wangsong
  • 你好。我看了你的文章,关于VBO的几篇。我正在做一个实现texture splatting的实验。现在再多重纹理的地方卡住了,我的显卡只支持4个纹理单元,我想在一个地形上实现比如5个纹理混合,纹理单元不够用,就需要在使用纹理单元绘制后再次使用其中的几个单元用于下次绘制,可是这样就出问题了----这样的多遍绘制,第一遍绘制之后,如果有第二遍(第三遍)绘制的话,纹理单元重复使用的话,就会造成纹理单元之前的纹理不能显示;而且,绘制完成之后,恢复单纹理状态,禁用所有0单元之外的纹理,会造成第二遍(第三遍)的绘制效果被消除---多重纹理,多遍绘制,禁用纹理单元,都会引起一些纹理,很是郁闷,你看看我的问题出在哪?关于这方面你有什么建议,多谢指教
    zwqxin 于 2010-9-5 16:59:01 回复
    不太明白你所说 绘制 的意思,是把一个地形在一帧内重复绘制多次吗?想必也不是。通常都会说纹理单元不够用的时候,就在一帧内绘制多一个pass,尽管一个地形画两次是很不爽的事情,但你硬件限制...这段话这样理解对吗.
  • 2010-9-5 10:21:35 回复该留言
  • quote 25.wangsong
  • 谢谢你的回复!我刚接触opengl两个月,有些名词不是很肯定它的意思。应该是多遍绘制当前地形。
    是这样的,我在VBO中上传一块32*32个顶点的地形块,在这个块上可能需要很多块纹理混合生成满意的效果。
    texture splatting描述的是这些纹理有的可能覆盖整个块,有的可能只覆盖左半边的地形以及其它情形,而且对应每一个需要操作的纹理,给它生成一个覆盖整个块的alphamap(例如对应纹理的每个texel,alphamap对应一个rgba组合来描述它应该按怎样的比例作用于当前位置),这个alphamap也需要当做一个bmp纹理来操作---也就是一个纹理加上它的alphamap作为一个渲染组合,需要两个纹理单元来操作。
    VBO绘制时,顶点位置,纹理坐标,颜色都不能改变,这样,就需要在每次绘制时加载不同的索引,再利用纹理矩阵将纹理坐标调整到合适位置---每个索引渲染一遍,这一遍可能需要几个纹理来混合。
    这样,就要根据情况,针对当前VBO顶点数据,指定几个索引,也就是绘制几次。
  • 2010-9-5 20:32:06 回复该留言
  • quote 26.wangsong
  • 现在的问题是:假定当前需要3个索引来绘制当前地形,也就是绘制3遍,而且这些索引有可能部分重叠---特别的是,我想一开始对整个地形渲染一个基本纹理,然后再在比如地形的左上角,右下角渲染另外两个纹理,实现比如一块沙漠上有两片植被的效果。这就需要一个整个地形的索引,以及两个角部分数据的索引。
    我现在遇到的问题是,绘制这样三个索引的时候效果出错----我先加载整块地形的索引,绘制;然后再分别加载两个角的索引,绘制---可结果,只出现类似绘制整块地形索引的结果,后两个索引的结果看不到。
    而且,我做了一个测试,在VBO中加载一个索引,先用纹理单元0,1来绘制一遍,调用drawelements();然后用纹理单元2,3在绘制一遍,调用drawelements()---结果只出现第一遍绘制的结果,后面纹理单元2,3的效果没有出现---而如果我先设置好纹理单元0,1,2,3,之后只调用一次drawelements(),就能呈现两块纹理混合的效果。
    这样的多遍绘制有什么需要注意的吗?谢谢你
  • 2010-9-5 20:45:38 回复该留言
  • quote 27.wangsong
  • 你好,我已经找出问题了。
    VBO中的纹理坐标覆盖整个区域,无论索引是包含了哪些部分,纹理单元0到3的数据都会对该索引造成影响,所以应该在启用部分纹理单元绘制一个索引后,立即禁用这些纹理单元,以免累积到下一次绘制。
    多遍绘制的问题,是因为多遍绘制时我没有禁止写深度缓存并设置深度相等即可写,所以当时只有第一遍绘制时有效果,而之后的绘制由于深度判断而没有起作用。之前提到的只要不禁用之后几遍绘制时设置的纹理单元,后几遍的纹理效果还是可以显示,就是因为纹理单元的累加作用,重新绘制时纹理单元的设置累加,所以相当于设置了全部的纹理单元。
    这些问题太菜鸟了,现在对Opengl的理解不深,都是些本可避免的问题.....
    麻烦了。
    zwqxin 于 2010-9-7 22:32:14 回复
    呵呵,看得出你很好学恩~~恰夜里12小时内发现问题了。不过如果是真的大点的地形的话,从减少提交的顶点数这个角度考虑,帧内多遍绘制还是奢侈了点。texture array如果硬件支持的话,就挺好。。
  • 2010-9-6 8:46:52 回复该留言
  • quote 28.sunacmer
  • 学到了很多东西,太谢谢你了!希望这里能越来越好,支持你!
  • 2010-9-14 8:58:57 回复该留言
  • quote 29.Lee
  • 你好,博主,我想问一下关于形态学运算小结中有关膨胀的问题,就是那个结构元素,为什么不用映象后的来进行运算,你提到了映象后的结构元素,但是你却没有用(你说没用),而我看冈萨雷斯图像处理书上定义说,需要运用映象后的来进行运算,我也请博主能否给详细解释一下,以解我心头之疑惑,谢谢


    zwqxin 于 2010-10-6 12:07:50 回复
    刚才看回了一下日志,貌似我说的映像不是你指的那个概念名词哦,造成不易理解敬请原谅。
  • 2010-10-6 11:22:53 回复该留言
  • quote 30.Lee
  • 博主你好,在冈萨雷斯那本书里面,A被B膨胀的定义为:{z|(B帽子)下标z∩A≠空集}(冈萨雷斯-数字图像处理第二版423页),其中((B帽子)下标z)不就是结构元素B的映射嘛,不是要用B的映射与A进行运算吗?对于对称的结构元素,其映射和自身没有区别,可是对于不对称的结构元素,其映射和自身是有区别的啊,你用结构元素做和用结构元素的映射做出来的效果是不一样的哦!我就想问一下博主,这个到底是用映射去做还是用结构元素本身去做,谢谢博主,能否解释一下,到底书中式子的真正意思是什么。
    zwqxin 于 2010-10-6 21:18:22 回复
    按书理解就可以了~~我记得我是没看过那本书的。不记得你所说的映像是指什么。
  • 2010-10-6 14:47:00 回复该留言
分页:[«][1][2][3][4][5]6[7][8][»]

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

IE下本页面显示有问题?

→点击地址栏右侧【兼容视图】←

日历

Search

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Walle Build 100427

Copyright 2008-2020 ZwqXin. All Rights Reserved. Theme edited from ipati.