首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在调用glDisable时jogl本机崩溃

在调用glDisable时jogl本机崩溃
EN

Stack Overflow用户
提问于 2012-01-13 12:46:53
回答 1查看 247关注 0票数 0

我有一个jogl应用程序,它在调用glDisable时(本地)崩溃(我不认为堆栈的细节在这里很重要-它是发生在EDT上的调用)。

我的问题实际上是关于glDisable如何可能导致本机崩溃。它总是被传递一个有效的标志来禁用。

我对此有两个想法:

1)显卡错误(虽然我已经尝试过更新驱动程序,但它仍然只出现在一些计算机上,所以仍然有可能是与显卡相关的)。

2) Java应用程序正在使用大量内存。我不知道是否有可能,如果分配了太多内存,本机代码中可能会发生不好的事情。不过,如果只是Java内存使用率很高,而不是整个系统内存,我认为错误会显示为Java错误。

你有没有想过这到底是怎么发生的?

EN

回答 1

Stack Overflow用户

发布于 2012-01-13 15:43:50

大多数情况下,OpenGL会通过忽略带有错误的调用来处理自己的错误,但也有一些错误会导致应用程序崩溃。我遇到过的唯一问题就是访问违规和糟糕的驱动程序。我有一种感觉,它不是glDisable调用(它只能触发GL_INVALID_ENUMGL_INVALID_OPERATION错误,由OpenGL自己用glGetError处理),而是前一个调用。

看看错误周围的代码会很好,但我将假设它是在纹理加载(glTexImage2D)或绘图调用(gl*PointerglDraw*)期间进行的。如果长度变量大于实际用于纹理/缓冲区的内存,OpenGL仍将尝试从这些地址读取,并且操作系统应抛出访问冲突异常。仔细检查这些变量,记住除了glDraw*调用之外,所有的变量都使用字节长度,这些调用使用的是元素的数量。

如果这不是您的问题,那么您的glDisable调用是您进行的第一个实际OpenGL调用,错误是JOGL找不到opengl32.dll或libgl.so或任何在您的操作系统上的OpenGL实现。在这种情况下,你只需要安装适当的驱动程序,它就会工作。有时,如果在驱动程序支持的版本之后调用在OpenGL中引入的方法,则会得到相同的错误。你可以用glGetString(GL_VERSION)检查你的OpenGL版本。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8846062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档