我有一些我写的 CAD 软件。每个正在绘制的组件都有一组顶点缓冲区对象。如果组件被删除,我必须在 finalize 方法中释放顶点缓冲区对象,例如:
if (gl != null) {
Integer[] keys = vbos.keySet().toArray(new Integer[0]);
for (int i = 0; i < keys.length; i++) {
Integer tmp = keys[i];
if (tmp != null) {
if (gl.glIsBufferARB(tmp.intValue()));
gl.glDeleteBuffersARB(1, new int[]{tmp.intValue()}, 0);
}
}
}
但是我有时会遇到 SIGSEV 和 JVM 崩溃。hs_err 日志文件指向 gl.glIsBufferArb(tmp.intValue())。
我相信这意味着我的 gl 对象不再有效?
我认为它应该仍然有效。该程序仍在运行,直到崩溃。有没有办法在不存储对 GL 对象的引用的情况下释放 glbuffer?
谢谢!