gpt4 book ai didi

c# - 数组是否对可编程图形管道的顶点元素数据有效?

转载 作者:太空宇宙 更新时间:2023-11-03 14:32:51 26 4
gpt4 key购买 nike

回应我之前在这里发布的问题:

What is a good code structure for api-independant vertex processing?

如果我说一个带有浮点值数组的顶点结构,例如:

public struct Vertex
{
float[] array = new float[4];

public Vertex(float x, float, y, float z, float w)
{
array[0] = x; array[1] = y; array[2] = z; array[3] = w;
}
}

能否将该顶点结构发送到顶点缓冲区(使用 OpenGL 或 DirectX)?数组是否包含任何其他字节数据或仅包含浮点值数据?就像我(在 DirectX 中)在声明中使用这个顶点作为 Transformed 一样,我可以将顶点发送到缓冲区并且将发送的所有内容都是浮点值,或者数组是否包含可能破坏我的着色器程序的其他信息?

最佳答案

不,不要这样做。结构可能没有正确对齐或有额外的数据...考虑到 .net 框架可能会更改并且这些不是保证的功能,这通常不是一件安全的事情。

最好的办法是将数据准备到 float array[] 中,并使用 fixed 关键字获取指针。这样我可以保证(我自己做)工作正常。无论如何,不​​要尝试做额外的事情来优化这些琐碎的事情。它们永远不会成为您的应用程序/游戏的瓶颈。 (甚至不是很重要)

如何使您的代码更具可读性-可维护性。

无论如何请记住,struct 与 array 的速度因您所做的事情而异。通常结构在随机访问时更快,数组在线性访问时更快,所以如果您有一些非常密集的应用程序部分(例如软件皮肤),请尝试选择适合您需要的正确部分。

关于c# - 数组是否对可编程图形管道的顶点元素数据有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2194065/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com