- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写我的前几个着色器,通常编写一个着色器来完成功能,因为我意识到主要的 XNA 库不支持它们。
我遇到的问题是,并非特定场景中的所有模型都包含纹理数据,我不知道如何处理。主要的 XNA 库似乎通过为 BasicEffect 使用包装类来处理它,通过内容管理器加载它并相应地有选择地启用或禁用纹理处理。
对于自定义着色器来说,实现这一点有多困难?我正在写的是一个通用的“色调偏移”效果,也就是说,我希望用这种技术绘制的任何东西都具有一定程度的纹理颜色(如果有)和顶点颜色的色调偏移。我是否需要编写单独的着色器,一个有纹理,一个没有?如果是这样,当我循环遍历我的 MeshParts 时,有什么方法可以检测给定部分是否具有纹理坐标,以便我可以应用正确的效果?
最佳答案
是的,您将需要单独的着色器,或者更确切地说是不同的“技术”——它仍然可以产生相同的效果并使用大部分相同的代码。你可以看看如何BasicEffect
(至少是 XNA 4.0 之前的版本)这样做 by reading the source code .
要检测模型网格部分是否具有纹理坐标,请尝试以下操作:
// Note: this allocates an array, so do it at load-time
var elements = meshPart.VertexBuffer.VertexDeclaration.GetVertexElements();
bool result = elements.Any(e =>
e.VertexElementUsage == VertexElementUsage.TextureCoordinate);
BasicEffect
的方式是通过
BasicMaterialContent
.
BasicEffect.TextureEnabled
如果
Texture
,则属性只是打开设置。
关于xna - HLSL:处理缺少 TexCoords 的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5645416/
我的顶点着色器: attribute vec4 vertexPosition; attribute vec2 vertexTexCoord; varying vec2 texCoord; unifor
我正在编写我的前几个着色器,通常编写一个着色器来完成功能,因为我意识到主要的 XNA 库不支持它们。 我遇到的问题是,并非特定场景中的所有模型都包含纹理数据,我不知道如何处理。主要的 XNA 库似乎通
我正在使用带有 VBO 的 glDrawElements 调用来渲染我的场景。场景是一 block 带有顶点和纹理坐标的布料——在这个例子中,我正在渲染一面旗帜。 在我的场景中,顶点是动态的,这意味着
学习Webgl-2-textures的主题时,发现两个纹理共享相同的 a_positions 和 a_texCoord,通过使用一个 drawArrays 调用,它们在屏幕上显示为相同的尺寸。是否可以
我目前正在为一款游戏开发 2D 图形引擎。我的着色器接受 2 个 UV 偏移浮点并通过应用偏移计算 TexCoord。 这是我的顶点着色器的示例: #shader vertex #version 33
我不明白 DirectX11 如何理解顶点缓冲区中的哪些值是顶点,哪些是法线,哪些是纹理坐标 例如: 以下代码有效,但它将模型绘制为全白。但是法线和顶点绘制正确 std::vector vertex_
我是一名优秀的程序员,十分优秀!