c# - C# 试图读取或写入受保护的内存。OpenGL/OpenTK 库
问题描述
我正在尝试执行以下代码:
static void Main(string[] args)
{
int Width = 512, Height = 512; //window size
var CubeSize = 200; // square size
int left, right, top, bottom;
left = (Width - CubeSize) / 2;
right = left + CubeSize;
bottom = (Height - CubeSize) / 2;
top = bottom + CubeSize;
GL.ClearColor(0, 0, 0, 1);
GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
GL.Color3(255, 0, 0);
GL.Begin(BeginMode.Quads);
GL.Vertex2(left, bottom);
GL.Vertex2(left, top);
GL.Vertex2(right, top);
GL.Vertex2(right, bottom);
GL.End();
}
在行GL.ClearColor
中它会引发错误:
尝试读取或写入受保护的内存
需要一些帮助。
解决方案
要使用大多数 GL 方法,您需要在 GL 线程上。判断您是否在 GL 线程上的最好GameWindow
方法是运行的GameWindow
. 如果要更改 GL 线程,则需要在不同的线程上创建一个新窗口,然后使用window.MakeCurrent()
.
如果您在任何不同的地方使用它(例如,如果您从 GC 终结器中处理纹理),您可能会遇到该异常。
推荐阅读
- sql-server - partition_id 和 partition_number 之间的区别
- javascript - 如何解决 chrome 中手风琴滚动的问题?
- javascript - React Native,所有项目的状态更改而不是单击的项目
- json - 调用从 react-app 返回 JSON 的 REST API
- c++ - 有什么方法可以在 cmake 中检测程序的版本吗?
- python - 如何通过 Python 脚本在 Windows 资源管理器中打开文件夹?
- constructor - Three.js THREE.DeviceOrientationControls 不是构造函数
- java - 没有最后一个节点的 LinkedList 的实现
- django - 将数据从两个模型传递到一个 html 页面 - Django
- javascript - 如何根据登录的用户角色禁用 HTML 文档的某些元素?