我想在OpenTk项目的同一窗口中使用xna绘制一些东西 但我是Xna的初学者,所以我不知道是否可能
如果可能的话,我想在这种方法中绘制Xna:
private void glControl1_Paint(object sender, PaintEventArgs e)
{
if (!glcontrol1_isloaded) return;
glControl1.MakeCurrent();
GL.MatrixMode(MatrixMode.Modelview);
GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
GL.LoadIdentity();
Scientifical_Calculations.Camara.Update(moviendo);
IntPtr sf = Glu.NewQuadric();
GL.Translate(0, 0, 0);
GL.Color3(Color.White);
GL.Enable(EnableCap.Texture2D);
Gl.glBindTexture(Gl.GL_TEXTURE_2D, suntext);
Glu.QuadricTexture(sf, true);
Glu.Sphere(sf, 10, 35, 35);
GL.Disable(EnableCap.Texture2D);
Stars.Draw();
glControl1.SwapBuffers();
}
我真的不知道是否有人曾尝试过这个,但我希望如此
答案 0 :(得分:0)
XNA使用的是Direct3d,而OpenTK是OpenGL。在一般情况下,您无法使用OpenGL绘制到Direct3d窗口中。[1]
可以做的是从XNA切换到MonoGame。它是XNA的开源实现,支持Direct3d和OpenGL。如果您使用OpenGL版本,您将能够使用XNA和OpenTK绘制到同一窗口。
[1] WGL_NV_DX_interop允许您在OpenGL和Direct3d之间共享纹理和渲染缓冲区,因此可以在某些系统上实现此功能。除非你真的知道你在做什么,否则我会反对它。