
[英]OpenGL Voxel Game - Avoid transparency overlapping
我正在制作一个体素游戏,我将水设计为0.5 alpha的立方体。 如果所有的水都处于同一高度,它的效果很好,如下图所示: 但是,如果水的高度不同,则会发生alpha重叠: 如何防止出现这种重叠? (例如,仅为每个像素绘制最近的水体,丢弃剩余的水体)。 我是否需要使用 ...
[英]OpenGL Voxel Game - Avoid transparency overlapping
我正在制作一个体素游戏,我将水设计为0.5 alpha的立方体。 如果所有的水都处于同一高度,它的效果很好,如下图所示: 但是,如果水的高度不同,则会发生alpha重叠: 如何防止出现这种重叠? (例如,仅为每个像素绘制最近的水体,丢弃剩余的水体)。 我是否需要使用 ...
[英]Opengl depth buffer to cuda
我是Opengl的新程序员,我的目标是将深度缓冲区检索到FBO,以便能够在不使用glReadpixels的情况下转移到cuda。 这是我已经做过的事情: 此代码使用正确的深度值创建我的FBO。 根据文章“在cuda上使用不规则z缓冲区的快速三角形光栅化”,现在出现了一个新问题 ...
[英]DirectX11 Depth values only 0 and 1
我正在将OpenGL渲染器移植到DirectX。 几乎一切都可以正常工作,但是我对深度有疑问。 3D中的所有内容都呈现为平面。 我已经检查了Visual Studio图形分析器和深度缓冲区和状态绑定。 如果我检查“深度/模板纹理资源”,则只有值0.f(屏幕上显示某些内容)和1.f(未渲 ...
[英]OpenGL C++ Depth buffer not working
我一直在使用OpenGL测试了一段时间,一直没能得到深度缓存工作,尽管使用GLUT_DEPTH作为参数glutInitDisplayMode和做glClear(GL_DEPTH_BUFFER_BIT)在显示功能的开始。 我不知道我还想念什么。 下面是一个最小的工作示例以及图1和2。要查看 ...
[英]Wrong depth buffer (to texture) output?
对于SSAO效果,我必须生成两个纹理:法线(在视图空间中)和深度。 我决定根据Microsoft教程 ( 将深度模板缓冲区读取为纹理一章)使用深度缓冲区作为纹理。 不幸的是,渲染后,我没有从深度缓冲区(下图)得到任何信息: 我猜这是不对的。 奇怪的是,深度缓冲区似乎有效 ...
[英]Depth buffer as texture - “D3D11 ERROR: The Format is invalid when creating a View”
我正在尝试使用深度缓冲区作为着色器中第二遍的纹理。 根据官方文档 ( “将深度模板缓冲区读取为纹理”段落),我已将D3D11_TEXTURE2D_DESC.Format设置为DXGI_FORMAT_R24G8_TYPELESS (因为之前是DXGI_FORMAT_D24_UNORM_S8_ ...
[英]How to fill depth buffer manually using OpenGL and GLSL
我对如何手动填充深度缓冲区没有成功进行了大量研究。 直到这里,我所知道的是,在渲染过程中,OpenGL自动填充了附加到FBO的深度纹理(GL_DEPTH_COMPONENT)。 例如,以下片段着色器代码有效: 因此,如果我将以下代码行写入主行: 结果是一样的! 因此 ...
[英]Understanding GL_ARB_conservative_depth extension
OpenGL表示,如果depth函数为GL_LESS且布局限定符为depth_less,则OpenGL将执行早期深度测试。 现在,如果缓冲区中的原始值为0.5,并且特定像素的深度为0.8,则它将无法通过早期深度测试。 但是,如果将值修改为0.4,则它不会失败。 在这种情况下如何运作? ...
[英]Reading FBO depth attachment whilst depth testing
我正在使用使用OpenGL 3.3的延迟渲染引擎。 我将FBO设置为我的G缓冲区,并附加了作为深度分量的纹理。 在我的光照测试中,我需要进行深度测试(禁用写操作)以剔除不必要的像素。 但是,我目前正在编写将重构世界位置坐标的代码,这也需要访问深度缓冲区。 在Opengl 3.3中 ...
[英]OpenGL selected depth testing
我想实现一个OpenGL场景(OpenGL ES 2.0),其中仅在选定的三角形之间启用深度测试。 更具体地说:假设我们要渲染四个三角形。 深度测试应该三角形1和2之间被启用,以及三角形3和4之间,但既不 三角形1和3 也不 三角形2和4之间。 换句话说:是否可以在两对三角形之间而 ...
[英]How to write to zbuffer only with three.js
我正在尝试使用thee.js仅更新zbuffer(我正在使用preserveDrawingBuffer创建跟踪效果)。 但是我找不到任何方法只能用标准材料写入zbuffer,到目前为止,我已经尝试过: 将材质的visible设置为false,这将停止对象渲染。 将材质的opa ...
[英]OpenGL Depth buffer & ortho projection
我正在使用Java和JOGL进行一些3D渲染。 我使用JOML库生成视图和投影矩阵: 我将这些矩阵发送给着色器,如下所示: 在处理过程中,不会对矩阵进行转置。 填充VAO和VBO后,我只需使用以下状态来渲染网格: 生成的图像非常奇怪,看起来深度缓冲区反转了。 在 ...
[英]Drawing a triangle in 3D to a depth buffer
我正在试验3D图形而不依赖于任何3D库,例如Java3D,OpenGL,DirectX等。我有一个工作的Z缓冲区(又名“深度缓冲区”),但我想不出绘制三角形的方法到那个缓冲区。 (每个三角形由3D中的三个点指定。) 任何人都可以提供伪代码来绘制Z缓冲区的三角形吗? ...
[英]XMVector3Unproject - Screen to world coordinate at specific Z
我想在Directx 11中将屏幕坐标转换为世界坐标。我发现我可以使用XMVector3Unproject函数轻松地做到这XMVector3Unproject 。 有一个问题,我想选择我自己的Z坐标来告诉函数我的观点离摄像机有多远(屏幕坐标是2d,世界坐标是3d)。 根据观察,我必须弄清楚深 ...
[英]OpenGL How to use a invisible mask to hide objects behind it
我有一个OpenGL问题要解决。 我有一个对象/网格A,一个对象/网格B和背景纹理C。 最初,帧缓冲区填充有背景纹理C。我们在帧缓冲区中同时绘制A和B。 我们要保持对象A可见,而对象B始终不可见。 首先,A在B的前面。在旋转过程中,根据深度测试结果,B以一定角度在A的前面,但是由 ...
[英]Change the values of OpenGL's z-buffer
我想将带深度值的矩阵传递给openGL的z缓冲区。 某处我发现我可以使用glDrawPixels(640,480,GL_DEPTH_COMPONENT,GL_FLOAT,normalizedMappedDepthMat.ptr()); mat是一个opencv Mat.Is是否可以使用纹 ...
[英]Direct3D 11 depth buffer result in black screen
我试图在Direct3D 11中实现深度缓冲区,但是事实证明,这并不像我所经历的那么容易。 这是我的问题:每当我调用此函数时: 使用第三个参数作为深度模板视图,窗口中什么也看不到; 一切都是黑色的。 如果我将nullptr放到了我的所有几何图形,则无需进行任何深度测试(就像在我尝试 ...
[英]Why we disable Z-write in blending
在混合中,我们首先绘制不透明对象,并启用z-write和test。 然后我们禁用z-write并启用测试以绘制半透明对象。 在绘制半透明对象时,我们将它们拉回到前面的顺序,那么为什么我们需要禁用写入z-buffer? ...
[英]iOS-Metal: How to clear Depth Buffer ? Similar to glClear(GL_DEPTH_BUFFER_BIT) in OpenGL
我需要清除深度缓冲区,为此我在 OpenGL 中使用glClear(GL_DEPTH_BUFFER_BIT) ,如何在金属中做? 我已经阅读了苹果的文档,没有任何提示。 ...
[英]32-bit depth buffer in OpenTK GLControl
如何在GLControl的深度缓冲区中设置位数? 我已经试过了: GLControl glControl = new GLControl( new GraphicsMode( new ColorFormat(8,8,8,8), 32)); 并且仍然提供24位深度缓冲区。 ...