【发布时间】:2023-05-27 06:08:01
【问题描述】:
我是 direct3d、图形、HLSL、c++ 的新手,我正在尝试编写一个程序来渲染不同的几何多维形状(例如超立方体),该程序应该在用户已定义尺寸、绘制、旋转和平移形状。
第一个问题是如何定义一个动态的顶点结构(用指针可以吗)。
第二:将形状从x维空间投影到3维空间的位置,我应该在代码(CPU)中这样做,还是可以将对象顶点和投影矩阵传递给着色器( HLSL)以及如何(尤其是在运行时定义的矩阵大小不同)。
与上述视图矩阵的问题相同(假设对象是 4-d 我希望程序放大/缩小-> 接近,或在 4-d 空间中沿 x 方向移动“我想处理对象的空间而不是投影的空间")
第三:如果上述所有方法在着色器中都不可能,我可以使用 c++amp(或它的替代方法)来加速主程序中此类操作的执行,否则会导致性能下降“Draw()”函数。
我搜索了网络和“*”,但找不到任何有用的东西。
【问题讨论】:
-
如果您将问题分解为单个问题,您可能会得到更好的回答。但是 FWIW,我很确定你不能在着色器中使用指针。
-
@LarsH 谢谢你的评论 我不能把它分解成单个问题,因为它们都是相关的,以上所有问题都源于同一个来源,这是对超-维度对象,还有很多“堆栈溢出”成员倾向于将实际问题视为非建设性问题或其他问题,将上述问题分为两个,一个涉及顶点,另一个涉及着色器很可能会关闭问题.
-
还有一件事:如果我不能将不同长度的顶点传递给着色器并且我想旋转超立方体,我应该旋转它的 4-d 顶点,将结果投影到 3-d 空间并重新注册每一帧的顶点?这不会导致性能大幅下降吗?
标签: c++ graphics hlsl direct3d11