使用DirectX 11,我创建了一个可以绑定为渲染目标的3D体积纹理:
D3D11_TEXTURE3D_DESC texDesc3d;
// ...
texDesc3d.Usage = D3D11_USAGE_DEFAULT;
texDesc3d.BindFlags = D3D11_BIND_RENDER_TARGET;
// Create volume texture and views
m_dxDevice->CreateTexture3D(&texDesc3d, nullptr, &m_tex3d);
m_dxDevice->CreateRenderTargetView(m_tex3d, nullptr, &m_tex3dRTView);
Run Code Online (Sandbox Code Playgroud)
我现在想要更新整个渲染目标并用像素着色器中生成的程序数据填充它,类似于使用"全屏通道"更新2D渲染目标.生成数据所需的一切都是所讨论像素的UVW坐标.
对于2D,可以构建渲染全屏三角形的简单顶点着色器:
struct VS_OUTPUT
{
float4 position : SV_Position;
float2 uv: TexCoord;
};
// input: three empty vertices
VS_OUTPUT main( uint vertexID : SV_VertexID )
{
VS_OUTPUT result;
result.uv = float2((vertexID << 1) & 2, vertexID & 2);
result.position = float4(result.uv * float2(2.0f, -2.0f) + float2(-1.0f, 1.0f), 0.0f, 1.0f);
return result;
}
Run Code Online (Sandbox Code Playgroud)
我很难绕过如何采用3D原理.这是即使在DirectX 11的可能,还是我的描述来呈现给卷纹理的个体片在这里?
我正在开发一个python脚本,它将能够生成.DAE(COLLADA)文件以及相关的KML文件,用于开发建筑物的3D模型.我有建筑物的街道图像.通过街道图像,我的意思是每个建筑物的正面图像.我需要将这些图像作为纹理放在各自的建筑模型上.我无法找到合适的方法来使用python来实现这一点.直到现在,我已成功生成空白立方体或长方体,可以定位在代表建筑物的地图上.我需要将图像作为纹理放在这些模型的前平面上,将图像作为输入.请帮助.
我想对我在WebGL中渲染的对象使用一些3D纹理.我正在片段着色器中使用以下方法,如WebGL和OpenGL上的建议差异:
// tex is a texture with each slice of the cube placed horizontally across the texture.
// texCoord is a 3d texture coord
// size is the size if the cube in pixels.
vec4 sampleAs3DTexture(sampler2D tex, vec3 texCoord, float size) {
float sliceSize = 1.0 / size; // space of 1 slice
float slicePixelSize = sliceSize / size; // space of 1 pixel
float sliceInnerSize = slicePixelSize * (size - 1.0); // space of size …
Run Code Online (Sandbox Code Playgroud) 我试图在opengl中创建一个简单的3D数组可视化.3D阵列包含颜色值.为了实现这一点,我可以绘制很多立方体,给它们纹理坐标指向正确的纹理像素.好吧,我试过了,它的确有效.但我需要更多,而实现我想要的唯一方法是,如果我只是在平面打开时在另一个轴方向上的每个网格上绘制完整的2D平面,并且这是6个方向.例如:我在-15到+15之间绘制XY平面,在Z坐标-15到+15之间绘制XY平面,对于背面XY平面,YZ平面,背面YZ平面,......这样,我可以在每个角落放置3D纹理坐标,插值应该完成其余的工作.
我已经将数组坐标作为纹理坐标,介于0和32之间,原因是,在着色器中,我可以将纹理坐标放下,然后将其除以32,以获得网格上每个像素的精确纹理像素.
但是唉...像素着色器一直在怀疑选择,一个像素映射到与下一个像素不同的纹理像素,而下一个像素着色器再次正确映射.
我曾经通过向浮点数添加0.5或0.35来解决这些问题,以确保浮点数在所有硬件平台上都能正确舍入,但对我来说这似乎仍然是一个黑客攻击.此外,它不适用于3D纹理.
有谁能告诉我如何处理这个?
3d-texture ×5
opengl ×2
3d-modelling ×1
collada ×1
directx-11 ×1
graphics ×1
grid ×1
hlsl ×1
mapping ×1
opengl-es ×1
python ×1
rendertarget ×1
three.js ×1
webgl ×1