我正在使用glDrawPixels来显示图像。我知道,我应该使用纹理,但有理由我不是。好吧至少现在不行。无论如何,正在显示的图像经常被更新,就好像它正在被扫描一样。只要我让它坐下来完成“扫描”,这就行得很好,但是,如果我在“扫描仍然在进行”时点击屏幕我在glDrawPixels上获得了一个AccessViolation异常。
Gl.glDrawPixels(mImageWidth, mImageHeight, Gl.GL_LUMINANCE, Gl.GL_UNSIGNED_SHORT, mDisplayBuffer);
mImageWidth和mImageHeight是预期值,因此它们不是此问题。
我放了一个for循环,它在glDrawPixels调用之前查看mDisplayBuffer中的每个元素。这里没有问题,因此访问冲突似乎不是来自mDisplayBuffer。
所以它必须是glDrawPixels中的内容吗?
我正在使用TAO框架,以便我可以使用C#和OpenGl。
答案 0 :(得分:1)
mDisplayBuffer的类型是什么?当glDrawPixels正在进行时,是否可以由另一个线程更新,或者由垃圾收集器重新定位(尝试围绕DrawPixels调用的范围锁定)?