【问题标题】:Downgrading OpenGL 4.5 code to OpenGL 3.0将 OpenGL 4.5 代码降级到 OpenGL 3.0
【发布时间】:2020-10-28 05:49:41
【问题描述】:

我找到了一个 repo 来解决我在使用 OpenGL 时遇到的问题,但它都是用 GL 4.5 编写的,我正在编写的应用程序需要是 GL 3.0 代码才能支持 OSX。通过在 docs.GL 上引用它并将其转换回我熟悉的 3.0 代码,我已经能够翻译大部分代码。

我在理解下面的代码方面有点吃力,所以我只是想知道是否有人能够指出我正确的方向。

vertexArray vertexBuffer indexBuffer 都是int

GL.VertexArrayVertexBuffer(vertexArray, 0, vertexBuffer, IntPtr.Zero, Unsafe.SizeOf<ImDrawVert>());
GL.VertexArrayElementBuffer(vertexArray, indexBuffer);

GL.EnableVertexArrayAttrib(vertexArray, 0);
GL.VertexArrayAttribBinding(vertexArray, 0, 0);
GL.VertexArrayAttribFormat(vertexArray, 0, 2, VertexAttribType.Float, false, 0);

GL.EnableVertexArrayAttrib(vertexArray, 1);
GL.VertexArrayAttribBinding(vertexArray, 1, 0);
GL.VertexArrayAttribFormat(vertexArray, 1, 2, VertexAttribType.Float, false, 8);

GL.EnableVertexArrayAttrib(vertexArray, 2);
GL.VertexArrayAttribBinding(vertexArray, 2, 0);
GL.VertexArrayAttribFormat(vertexArray, 2, 4, VertexAttribType.UnsignedByte, true, 16);

编辑:如果有人想知道,我将 OpenTK 与 C# 一起使用。

【问题讨论】:

  • "我正在编写的应用程序必须是 GL 3.0 代码才能支持 OSX" MacOS 支持 GL 4.1(假设您有合适的硬件)。但是,MacOS 弃用了 OpenGL,并且几乎可以随时将其删除。因此,您可能希望避免将自己限制在这样的平台上。
  • 在我看来像 DSA 代码。

标签: c# opengl opengl-3 opengl-4


【解决方案1】:

对于将来偶然发现此特定问题的任何人,我必须阅读 GL 4.5 代码的描述并将其与 GL 3.0 代码匹配。

对于这个特定的代码sn-p,它变成:

GL.BindVertexArray(vertexArray);

GL.BindBuffer(BufferTarget.ArrayBuffer, vertexBuffer);
GL.BindBuffer(BufferTarget.ElementArrayBuffer, indexBuffer);

GL.EnableVertexAttribArray(0);
GL.VertexAttribPointer(0, 2, VertexAttribPointerType.Float, false, Unsafe.SizeOf<ImDrawVert>(), 0);

GL.EnableVertexAttribArray(1);
GL.VertexAttribPointer(1, 2, VertexAttribPointerType.Float, false, Unsafe.SizeOf<ImDrawVert>(), 8);

GL.EnableVertexAttribArray(2);
GL.VertexAttribPointer(2, 4, VertexAttribPointerType.UnsignedByte, true, Unsafe.SizeOf<ImDrawVert>(), 16);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多