标签: depth

使用GL_DEPTH_TEST和透明纹理渲染毛刺

从一个角度看,我的灌木看起来像这样:

另一方面,它们看起来像这样:

我的理论是,当从第一个角度观察灌木时,灌木后面的所有块都已经被抽出,所以当它来绘制灌木时,它只是将它们拉到上面.

然而,从另一个角度来看,它基本上是先尝试绘制灌木,然后当​​它在灌木丛后面绘制块时,它会检查深度缓冲区并看到已经阻挡了块的视图,所以它没有渲染它,导致海军蓝色方块(我的颜色清晰).

我真的不知道如何解决这个问题.禁用深度测试会导致各种其他错误.有没有办法将顶点或多边形标记为具有透明度,以便它知道它仍然需要渲染后面的内容?


发现了这个.这是唯一的解决方案吗?要分离我的透明和不透明块,然后在CPU上手动对它们进行几乎每一帧的排序,因为玩家可以四处移动?必须有一种方法将其委托给GPU ......

opengl 3d rendering depth

3
推荐指数
1
解决办法
4440
查看次数

使用Perl的文件时::找到一种快速简便的方法来限制搜索深度?

我希望能够将Perl限制File::Find到目录深度(在指定搜索下面)到指定目录以及它下面的1和2子目录.

我希望能够同时枚举文件,如果可能的话.

它必须与绝对路径一起工作.

directory perl depth file-find

3
推荐指数
1
解决办法
3468
查看次数

等距深度排序问题与大对象

我目前正在构建一个as3等距游戏,但我在深度排序方面遇到了很多问题.我搜索了一个解决方案,但没有找到任何符合我的问题(矩形对象).

这是我的游戏截图:

在此输入图像描述

如您所见,深度排序在1x1 tile对象之间运行良好.我只是使用他们的x和y坐标(相对于等轴测图)来对它们进行排序.

当我有更大的对象时,问题就出现了,例如2x2或1x4或4x1.

知道如何处理深度排序呢?

sorting actionscript-3 isometric depth

3
推荐指数
1
解决办法
7238
查看次数

OpenCV:更改深度和日志转换

我正在尝试学习OpenCV,我想应用这个简单的公式: 在此输入图像描述

这是一个每像素操作,并将像素从r转换为s.

这是我的代码:

int main(int /*argc*/, char** /*argv*/) {

    Mat _img = imread("lena.jpg"); 
    cvtColor(_img, img, CV_32F);

    cout << "original image size: " << img.rows << " " << img.cols << endl;
    cout << "original type: " << img.type() << endl;
    cout << "original depth: " << img.depth() << endl;

    Mat _src = img.clone();
    _src += 1;
    log(_src, logContrast);
    logContrast *= log_c;

    /// ...
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

OpenCV Error: Assertion failed (depth == CV_32F || depth == CV_64F) in …
Run Code Online (Sandbox Code Playgroud)

opencv depth

3
推荐指数
1
解决办法
1万
查看次数

WebGL显示帧缓冲?

我使用了WEBKIT_WEBGL_depth_texture扩展.并初始化缓冲区.但是我怎么能画这个帧缓冲?我现在总是被困住了.-.-

function InitDepthtextures (){


var size = 256;

// Create a color texture
var colorTexture = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, colorTexture);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, size, size, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);

// Create the depth texture
depthTexture = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, depthTexture);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.DEPTH_COMPONENT, size, size, 0, gl.DEPTH_COMPONENT, gl.UNSIGNED_SHORT, null);

framebuffer = gl.createFramebuffer();
gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, colorTexture, …
Run Code Online (Sandbox Code Playgroud)

javascript framebuffer depth webgl

3
推荐指数
1
解决办法
8532
查看次数

WebGL 深度纹理全白?

我在 chrome 中使用 WEBGL_depth_texture 将场景渲染到具有颜色和深度纹理的帧缓冲区。当我显示我的颜色纹理时效果很好,但我的深度纹理全是白色的。不应该像灰色吗?

我的绘制纹理功能:

this.drawTexture = function() {

    //gl.viewport(0, 0, this.canvas.width, this.canvas.height);
    gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);  

    gl.bindBuffer(gl.ARRAY_BUFFER, this.vertBuffer);
    gl.vertexAttribPointer(this.VertexPosition, 2, gl.FLOAT, false, 0, 0);

    gl.bindBuffer(gl.ARRAY_BUFFER, this.vertTexCoordBuffer);
    gl.vertexAttribPointer(this.VertexTexture, 2, gl.FLOAT, false, 0, 0);

    gl.bindTexture(gl.TEXTURE_2D, this.depthTexture);


    gl.drawArrays(gl.TRIANGLES, 0, 6);

    gl.bindTexture(gl.TEXTURE_2D, null);
Run Code Online (Sandbox Code Playgroud)

在里面:

           this.colorTexture = gl.createTexture();
        gl.bindTexture(gl.TEXTURE_2D, this.colorTexture);
        gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
        gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
        gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
        gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
        gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, size, size, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);

        this.depthTexture = gl.createTexture();
        gl.bindTexture(gl.TEXTURE_2D, this.depthTexture);
        gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
        gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
        gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, …
Run Code Online (Sandbox Code Playgroud)

textures google-chrome depth webgl

3
推荐指数
1
解决办法
3198
查看次数

如何查询 svn 中由 --set-depth 设置的更新粘性深度的状态?

假设我已将工作副本目录的“粘性深度”更改为,'immediates'

svn update --set-depth immediates my_dir
Run Code Online (Sandbox Code Playgroud)

(与稀疏目录有关的东西。)

我如何确定 的这种状态my_dir?例如。我忘记了设置的深度,如何检查/测试它?我尝试svn info -v .在父级中使用exclude-d dir,但我根本看不到任何有关它的信息。

svn working-copy depth

3
推荐指数
1
解决办法
568
查看次数

深度模板缓冲区不工作 directx11

好吧,我现在尝试了一切,但我真的迷失了......

ID3D11Texture2D* depthStencilTexture;

D3D11_TEXTURE2D_DESC depthTexDesc;
ZeroMemory (&depthTexDesc, sizeof(D3D11_TEXTURE2D_DESC));
depthTexDesc.Width = set->mapSettings["SCREEN_WIDTH"];
depthTexDesc.Height = set->mapSettings["SCREEN_HEIGHT"];
depthTexDesc.MipLevels = 1;
depthTexDesc.ArraySize = 1;
depthTexDesc.Format = DXGI_FORMAT_D32_FLOAT;
depthTexDesc.SampleDesc.Count = 1;
depthTexDesc.SampleDesc.Quality = 0;
depthTexDesc.Usage = D3D11_USAGE_DEFAULT;
depthTexDesc.BindFlags = D3D11_BIND_DEPTH_STENCIL;
depthTexDesc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE | D3D11_CPU_ACCESS_READ;
depthTexDesc.MiscFlags = 0;

mDevice->CreateTexture2D(&depthTexDesc, NULL, &depthStencilTexture);

D3D11_DEPTH_STENCIL_DESC dsDesc;
// Depth test parameters
dsDesc.DepthEnable = true;
dsDesc.DepthWriteMask = D3D11_DEPTH_WRITE_MASK_ALL;
dsDesc.DepthFunc = D3D11_COMPARISON_LESS;//LESS

// Stencil test parameters
dsDesc.StencilEnable = false;
dsDesc.StencilReadMask = 0xFF;
dsDesc.StencilWriteMask = 0xFF;

// Stencil operations if pixel is …
Run Code Online (Sandbox Code Playgroud)

directx buffer direct3d depth

3
推荐指数
1
解决办法
2486
查看次数

从帧缓冲纹理渲染深度

我一直在尝试将SSAO(基于这里的教程:http://john-chapman-graphics.blogspot.co.nz/2013/01/ssao-tutorial.html)添加到我的项目中,我已经坚持正确渲染深度.

我创建了一个帧缓冲纹理来绘制每个帧的深度.当我将它绘制到四边形时,纹理本身看起来正确,但我无法弄清楚如何正确地将它应用于整个场景.

这是常规场景的样子:

在此输入图像描述

这是应用的深度纹理: 在此输入图像描述

目前在我的片段着色器中,我只使用常规纹理坐标(TexCoord0)来绘制深度纹理.我猜我需要改变它,但我不知道要改变它.这是相关的片段着色器代码:

#version 330 core

in vec2 TexCoord0;

smooth in vec3 vNormal;
smooth in vec3 vWorldPos;
in mat4 ProjectionMatrix;

uniform sampler2D uDepthTex;

layout(location = 0) out vec4 FragColor;

void main()
{
    FragColor = texture(uDepthTex, TexCoord0);
}
Run Code Online (Sandbox Code Playgroud)

关于如何解决这个问题,我有点不知所措.我在网上看了很多示例代码,似乎使用常规纹理坐标来绘制深度.

编辑:这是我的帧缓冲设置代码:

glGenFramebuffers(1, &ssaoFramebufferID);
glBindFramebuffer(GL_FRAMEBUFFER, ssaoFramebufferID);

glGenTextures(1, &ssaoDepthTextureID);
glBindTexture(GL_TEXTURE_2D, ssaoDepthTextureID);

glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT24, 1024, 1024, 0, GL_DEPTH_COMPONENT, GL_FLOAT, 0);

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);

glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_NONE);

glFramebufferTexture(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, …
Run Code Online (Sandbox Code Playgroud)

opengl textures framebuffer depth-buffer depth

3
推荐指数
1
解决办法
7774
查看次数

从深度图像生成点云

我正在尝试将深度图像 (​​RGBD) 转换为 3d 点云。我目前使用的解决方案来自这篇文章,其中:

  • cx = 图像中心高度
  • cy = 图像中心宽度
  • fxfy= 250,通过迭代几个选项来选择

深度测量是从针孔相机拍摄的,点云从中心向外投射(下面的示例图像)。谁能帮助我理解为什么以及如何解决这个问题?

在此处输入图片说明 在此处输入图片说明 在此处输入图片说明

python image depth point-clouds projection-matrix

3
推荐指数
1
解决办法
1万
查看次数