C# 如何使用GLFW.NET初始化OpenGL.NET?
我正在尝试在C#中使用OpenGL和GLFW。我已经为GLFW.Net和OpenGL.Net安装了NuGet软件包。我一生都搞不懂的是,我如何用GLFW.Net设置OpenGL.Net的上下文??当我尝试运行非常基本的测试OpenGL代码时,没有出现错误消息。i、 eC# 如何使用GLFW.NET初始化OpenGL.NET?,c#,opengl,openglcontext,C#,Opengl,Openglcontext,我正在尝试在C#中使用OpenGL和GLFW。我已经为GLFW.Net和OpenGL.Net安装了NuGet软件包。我一生都搞不懂的是,我如何用GLFW.Net设置OpenGL.Net的上下文??当我尝试运行非常基本的测试OpenGL代码时,没有出现错误消息。i、 e class Program { [STAThread] static void Main(string[] args) { Glfw.Init
class Program
{
[STAThread]
static void Main(string[] args)
{
Glfw.Init();
GLFWwindow window = Glfw.CreateWindow(1080, 720, "Yeet", null, null);
Glfw.MakeContextCurrent(window);
Gl.Initialize();
uint vao = Gl.CreateVertexArray();
Gl.BindVertexArray(vao);
uint vbo = Gl.CreateBuffer();
Gl.BindBuffer(BufferTarget.ArrayBuffer, vbo);
Gl.BufferData(BufferTarget.ArrayBuffer, 6, new float[] { -0.5f, -0.5f, 0.5f, -0.5f, 0.0f, 0.5f }, BufferUsage.StaticDraw);
Gl.VertexAttribPointer(0, 2, VertexAttribType.Float, false, 0, null);
while (Glfw.WindowShouldClose(window) != 1)
{
Glfw.PollEvents();
Gl.ClearColor(0.0f, 1.0f, 1.0f, 1.0f);
Gl.Clear(ClearBufferMask.ColorBufferBit);
Gl.BindVertexArray(vao);
Gl.EnableVertexAttribArray(0);
Gl.DrawArrays(PrimitiveType.Triangles, 0, 3);
Gl.DisableVertexAttribArray(0);
Gl.BindVertexArray(0);
Glfw.SwapBuffers(window);
}
Glfw.DestroyWindow(window);
Glfw.Terminate();
}
}
但什么也没有。这是不是意味着我的背景不存在,或者说我很愚蠢,留下了一些东西?在第一块玻璃上,我看到了一个明显的问题。缓冲区数据的大小必须以字节为单位指定(请参阅)。因此,尺寸必须为6*4,而不是6:
var-vertices=newfloat[]{-0.5f、-0.5f、0.5f、-0.5f、0.0f、0.5f};
Gl.BufferData(BufferTarget.ArrayBuffer,(uint)(4*顶点.长度),
顶点,BufferUsage.StaticDraw);
结果表明,在创建当前库之前,必须对库进行初始化(无论出于何种原因):
Gl.Initialize();
Glfw.MakeContextCurrent(窗口);
在第一块玻璃上,我看到了一个明显的问题。缓冲区数据的大小必须以字节为单位指定(请参阅)。因此,尺寸必须为6*4,而不是6:
var-vertices=newfloat[]{-0.5f、-0.5f、0.5f、-0.5f、0.0f、0.5f};
Gl.BufferData(BufferTarget.ArrayBuffer,(uint)(4*顶点.长度),
顶点,BufferUsage.StaticDraw);
结果表明,在创建当前库之前,必须对库进行初始化(无论出于何种原因):
Gl.Initialize();
Glfw.MakeContextCurrent(窗口);
我所要做的就是将Gl.Initialize()移到Glfw.MakeContextCurrent(窗口)上方。我想您必须先创建OpenGL上下文,然后将上下文设置为当前上下文。这与LWJGL不同,LWJGL必须在调用GL.createCapabilities()之前调用GLFW.glfwMakeContextCurrent()希望这有帮助 我所要做的就是将Gl.Initialize()移到Glfw.MakeContextCurrent(窗口)上方。我想您必须先创建OpenGL上下文,然后将上下文设置为当前上下文。这与LWJGL不同,LWJGL必须在调用GL.createCapabilities()之前调用GLFW.glfwMakeContextCurrent()希望这有帮助 在你的情况下,颜色清除(变为蓝色)有效吗?不。可能是上下文创建吗?颜色清除(变为蓝色)在你的情况下有效吗?不。可能是上下文创建吗?我确认。我已经核实了,我确认。我已经证实了这一点。