gpt4 book ai didi

c++ - OpenGL在GPU上构建和使用数据

转载 作者:行者123 更新时间:2023-12-02 10:08:45 25 4
gpt4 key购买 nike

我不是图形程序员,我主要使用C++和C,并且每次尝试使用OpenGL时,每本书和每种资源都像这样开始:

GLfloat Vertices[] = {
some, numbers, here,
some, more, numbers,
numbers, numbers, numbers
};

甚至它们可能是vec4。

但是随后您将执行以下操作:
for(int i = 0; i < 10000; i++)
for(int j = 0; j < 10000; j++)
make_vertex();

然后您遇到了问题。该循环将花费大量时间-如果make_vertex()函数像saxpy或类似的东西,那不只是一个问题……这是一个大问题。例如,假设我们希望创建分形地形。对于任何现代图形卡,这都是微不足道的。

我知道范例是这样的:手动编写顶点->将它们发送到GPU-> GPU会执行顶点处理,几何,栅格化等所有方面。我相信这一切都是有道理的。但是,为什么我必须执行整个“发送结束”步骤? 有没有办法跳过整个中间步骤,仅在GPU上创建顶点并进行绘制,而没有明显的瓶颈?

我至少会感激正确方向上的一点。

我还想知道是否有可能不研究计算着色器或CUDA的解决方案? openGL或GLSL是否没有提供可以并行执行的合适随机函数?

最佳答案

您可能想将CUDA用于在C或C++中常用的操作,并让OpenGL访问光栅化器和其他图形功能。

OpenGL和CUDA可以很好地交互。定制缓冲区对象内容的一个很好的入口点是:http://docs.nvidia.com/cuda/cuda-runtime-api/group__CUDART__OPENGL.html#group__CUDART__OPENGL_1g0fd33bea77ca7b1e69d1619caf44214b,使用cudaGraphicsGLRegisterBuffer方法。

您可能还需要查看NVIDIA GPU SDK示例中的nbody示例,该示例随当前CUDA安装一起提供。

关于c++ - OpenGL在GPU上构建和使用数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37367020/

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