问题标签 [zbuffer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
xna - 后面的顶点被画在前面 - XNA
好吧,我正在创建一个我的世界地形的东西只是为了它。我遇到的问题是,如果你从某个角度看,一些实际上在其他人后面的脸会被画在他们前面,因此不会显示那里的实际脸。像 minecraft 一样,我将地形分成多个区域,并且在构建顶点缓冲区时,只显示“外部”面。这也是由于某种原因没有绘制最顶部或左侧的块。除了所有这些问题外,人脸似乎是重叠的,即(只能看到一半人脸)
这是它的样子(注意我只画了顶面,因为我必须修复其他的):http ://s1100.photobucket.com/albums/g420/darestium/?action=view¤t=minecraftliketerrain.png
我还使用以下方法一次性绘制所有区域(我正在使用 reimer 的效果文件,直到我可以编写自己的 :):
非常感谢您的帮助,谢谢:)
c# - 某些面孔没有出现
好吧,我正在创建一个类似于地形的东西 - 就像我的世界被分成区域一样。我的问题很简单,有些人脸没有显示,6x6 区域的顶部和右侧部分没有显示。
我想知道是否有人可以检查我的代码以查看我做错了什么,这是函数:
此代码显示:s1100.photobucket.com/albums/g420/darestium/第一张图像是未绘制的面,后者是未绘制区域的侧面。
提前致谢, Darestium
opengl - 从 Cg 写入深度缓冲区,然后从 OpenGL 读取它
我想用 cg 创建一个阴影贴图。我编写了一个 opengl 程序和 2 个像素着色器(带有 2 个顶点着色器)。在第一个像素着色器中,我编写了 DEPTH 寄存器,并在 OpenGL 程序中将其读取到纹理中。在第二个像素着色器中,我想从这个纹理中读取,但它似乎只包含 0 个值。两个着色器中都有另一个纹理,我不知道那辆货车是否有问题,但我不这么认为。
第一个着色器是这样的:
在 OpenGL 程序中,我为深度组件创建了一个纹理:
启用 GL_DEPTH_TEST,然后在显示对象后:
然后在第二个着色器中:
我得到的只是全黑屏。我尝试了各种各样的事情,我得出了这样的结论,这似乎是我的
仅包含 0 个值。因为如果我将深度的值例如更改为 0.2,那么它就可以工作,所以我认为问题出在从 z 缓冲区读取,或者读取阴影贴图的纹理。那么如何将 z-buffer 的内容保存到 opengl 中的纹理中呢?
matlab - Matlab中使用OpenGL获取深度缓冲区
我以前问过类似的问题,但没有找到直接的答案。
有人可以提供示例代码,用于将对象渲染的深度缓冲区提取到 Matlab 中的图形中吗?
所以假设我加载了一个 obj 文件,甚至只是一个简单的 surf 调用,渲染它,现在想要到达它的深度缓冲区,那么使用 Matlab 和 OpenGL 的代码将为我做这件事。即我如何设置它然后访问实际数据?
我本质上希望能够使用 Matlabs 强大的绘图功能,然后能够访问底层图形上下文以获取深度缓冲区。
注意:赏金指定 JOGL,但这不是必须的。在 Matlab 中运行后可以为我提供深度缓冲区的任何代码就足够了)
opengl - 2D 深度缓冲
我正在开发具有逼真延迟照明的 2D 游戏。由于我是在渲染场景后渲染灯光,因此如果有物体(例如树)挡住了被照亮的区域,我需要一种方法来剔除光照计算。在做了一些阅读之后,我对延迟渲染的最佳选择是使用深度缓冲区。我一直在互联网上寻找具有 2D 图形深度缓冲区的方法,但确实没有发现任何有用的东西。我找到了glPolygonOffset
,但我真的不知道这是否是我想要的,或者是否有另一种方法来设置多边形的 az 值。谢谢你的帮助
iphone - 基于图块的 cocos2D-iPhone 游戏的最佳 Z 排序方法?
我想用 cocos2D 制作等距、基于瓷砖的 iPhone 游戏。
精灵需要绘制在它“后面”的其他精灵之上。我正在寻找最好的方法来做到这一点。
我想避免使用画家算法,因为它涉及对每一帧的所有精灵进行排序,这很昂贵。
GPU 和 cocos2D 支持 Z 缓冲区算法,所以这是我想使用的,但是有一个问题。一些精灵,例如建筑物,占据多个瓷砖。为这些精灵分配 Z 值很困难。
这些是我想到的选项:
- 比较两座建筑物并确定哪一座在“前面”很容易。因此可以对建筑物进行排序,然后根据排序顺序为其分配 Z 值。这与画家的算法没有什么不同。OpenGL ES Z 缓冲区将不是必需的。
- 仅根据其在地图上的位置(不知道其他建筑物的位置)为每个建筑物分配 Z 值。我觉得这很难。我认为这是可能的,但我还没有想出一个公式。
- 对占据多个图块的图像使用多个精灵,因此所有精灵的大小完全相同。然后可以根据精灵占用的图块轻松分配 Z 顺序。这个解决方案的问题在于它使游戏逻辑更加复杂。对于构成该建筑物的每个精灵,都必须重复对单个建筑物的所有操作。我想将每个对象视为一个实体。
- 修改 cocos2D 代码,允许精灵在不同的点有多个 Z 值。如果一个精灵可以根据精灵的特定部分落在哪个图块上具有多个 Z 值,那么计算该部分的 Z 值很容易。我不需要将精灵与任何其他精灵进行比较。我相信这可以通过为每个精灵使用多个四边形来实现。问题在于它对我来说有点复杂,因为我是 OpenGL ES 和 cocos2D 的新手。我并不完全理解所有内部数据结构是如何工作的。尽管如果找不到公式,这似乎是最优雅的解决方案。
我将对任何有用的资源的建议或参考进行投票。
matlab - MATLAB:模糊的标题
当绘制的稀疏矩阵的大小增加时,标题(如果由 TeX 排版)异常模糊。这种影响的基础是什么,如何避免?
例子:
opengl - 我自己的 z 缓冲区
如何制作自己的 z 缓冲区以正确混合 Alpha 通道?我正在使用glsl。我只有一个想法。这是使用 2 个“缓冲区”,其中一个存储深度分量和另一种颜色(带有 alpha 通道)。我不需要在我的程序中访问缓冲区。我不能使用统一数组,因为 glsl 对统一变量的数量有限制。我不能使用 FBO,因为没有定义有时写入和读取帧缓冲区的行为(并且不在任何卡上工作)。
我该如何解决这个问题?!
或者如何从 glsl 读取实际的实时 z-buffer?(我的意思是对于每个片段着色器调用 z-buffer 必须更新)
alpha - 在 three.js 中,alpha 通道工作不一致
我正在three.js 中构建一个“剪纸”世界。我所有的模型都是简单的“平面”,我用带有 alpha 通道的 PNG 对它们进行纹理处理,以将平面修剪成更令人愉悦的形状。
奇怪的是:透明度会根据平面的位置和相机的位置而出人意料地出现和消失。
症状 1:如果平面部分位于地平面下方,则透明度起作用,但如果我将其移动到地平面上方,则透明区域将填充为白色。
症状 2:建立在症状 1 的基础上:如果我现在四处移动相机以使外观矢量几乎与平面平行,则透明度再次开始工作。
有什么想法吗?看起来有点像优化出错或可能是 z-write 问题?无论 alpha 值如何,纹理都会写入 z 吗?如果是这种情况,我认为它不会对位置或摄像机角度敏感。
cocos2d-iphone - 使用 cocos2d-iphone 启用 2D 投影的充分理由是什么?
在 cocos2d-iphone 中,默认的投影类型是“3D”投影。但您也可以将投影设置为“2D”,如下所示:
在幕后,3D 投影使用透视投影,而 2D 投影是 OpenGL 正交投影。这两种投影模式的技术细节可以在这里查看,这不是我感兴趣的。
二维投影对于 cocos2d 用户有什么好处和坏处?切换到 2D 投影的充分理由是什么?
就我个人而言,我使用 2D 投影能够将深度缓冲用于等距平铺地图。等距平铺地图需要此功能才能正确在平铺地图上对平铺和对象进行 z 排序。
我还在非 tilemap 项目中使用了带有深度缓冲的 2D 投影,以通过 vertexZ 属性获得完整的 z 顺序控制。该项目使用伪等距显示,其中对象的 vertexZ 基于其 Y 坐标。
这意味着我一直使用 2D 投影只是为了能够使用 vertexZ 属性,这也需要启用深度缓冲。是否还有其他原因可能想要切换到 2D 投影?