Welcome to ZwqXin


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

What are you looking for?

留言本

  • 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 回复该留言
  • quote 31.Lee
  • 映象就是博主文章——形态学运算小结中关于膨胀说明的那个图C。文中原句为——设A为原图像。B为结构元素(C为B的映像,没用)。映象不就是C嘛,和结构元素B有联系但又和B不一样。从图D中可以明显看出,是用B进行的运算,而不是用C运算,就在这一点产生了困惑。
    请问博主,到底是用B进行运算,还是用C进行运算。能否给个明确的答复?谢谢
    zwqxin 于 2010-10-7 16:34:47 回复
    我改成“没使用”或许会好点吧(forgotten)。不过我就不明为什么书上说要用结构元素的旋转了,太学究了,明白输入和输出之间的联系逻辑原理对我就够了,呵呵。
  • 2010-10-7 14:41:02 回复该留言
  • quote 33.kawayiboy
  • 你好,对于shadowmap,怎么样做纹理混合?使得在有纹理的物体上有阴影?谢谢
    zwqxin 于 2010-11-5 20:59:38 回复
    阴影其实就是在原场景上加一个PASS而已....不过要混合得好的话建议你得用上shader
  • 2010-11-4 20:29:53 回复该留言
  • quote 34.kawayiboy
  • 你好,想问一下如何在你shadowmapdemo1的基础上添加纹理,你在后来的csmdemo里用了多个shader,请问这些是怎么用的?
    zwqxin 于 2010-11-7 14:02:04 回复
    回答完毕
  • 2010-11-6 21:16:19 回复该留言
  • quote 35.wangsong
  • 你好。我正在学习纹理数组,我是使用NVIDIA的CG语言,参考了你的DEMO,另外也看了NVIDIA提供的EXAMPLE,发现了一些问题。
    1.首先,对于纹理数组,必须使用glTexParameteri( GL_TEXTURE_2D_ARRAY_EXT, GL_GENERATE_MIPMAP_SGIS, GL_TRUE),否则没有结果(即只有黑色,表示没有采样成用)。我试了,即使再简单的程序,要贴纹理的话,都必须生成MIPMAP。我只是参考了NVIDIA提供的用户手册,也没有专门指出有这个限制,搜索了一下也没有找到确实的说明。
    2.GLSL我没有看过,而像CG语言的话,在应用程序中都要手动的为shader中的变量赋值,即获得变量名称,为变量赋值。而像纹理数组,它的纹理ID没有在程序中显示的赋给shader中的变量,即使这样shader也能获得该纹理数组ID,采样成功,不知道是什么原理。

    请博主赐教!
    zwqxin 于 2010-11-22 23:51:04 回复
    纹理应该有的,否则你的sampler怎么来呢...GL里纹理对象ID需要传入shader,GLSL2.0,没有显式指定的时候shader里用的是TEXTURE0,貌似。对于MIPMAP问题不太确定,也没怎么留意,不过texArray就是一个纹理ID对应多张纹理,而MIPMAP意义上说是储存一张纹理图多个采样的纹理样本,可能可以联想到什么吧^^
  • 2010-11-20 23:19:57 回复该留言
分页:[«][1][2][3][4]5[6][7][8][»]

发表评论:

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

IE下本页面显示有问题?

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

日历

Search

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Walle Build 100427

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