将cl opengl与着色器一起使用

将cl opengl与着色器一起使用,opengl,glsl,common-lisp,slime,Opengl,Glsl,Common Lisp,Slime,我试图将现代opengl教程中的代码转换为cl,但如果启动程序,将打开一个没有任何内容的新窗口,并且我必须重新启动整个窗口管理器,因此很难进行调试 我的代码(使用sdl2而不是glut): 让(现代)opengl使用cl的最佳方式是什么? 我是否应该使用另一个教程(可能是通用lisp?我没有找到)或其他LIB(例如lispy glsl或不是sdl2)?我不认为您想调用gl free array。您没有使用VBOs,因此OpenGL需要CPU端内存来渲染三角形。你应该把三角形数组放在一个全局变量中

我试图将现代opengl教程中的代码转换为cl,但如果启动程序,将打开一个没有任何内容的新窗口,并且我必须重新启动整个窗口管理器,因此很难进行调试

我的代码(使用sdl2而不是glut):

让(现代)opengl使用cl的最佳方式是什么?
我是否应该使用另一个教程(可能是通用lisp?我没有找到)或其他LIB(例如lispy glsl或不是sdl2)?

我不认为您想调用gl free array。您没有使用VBOs,因此OpenGL需要CPU端内存来渲染三角形。你应该把三角形数组放在一个全局变量中。

不能评论,所以这将是一个答案(是的,我知道这个问题是半旧的)。 您的主要问题似乎源于您的
到gl数组
,它实际上在填充数组后丢弃数组-将
NIL
返回到
三角形

(defun to-gl-array (seq type
                &aux
                  (length (length seq))
                  (array (gl:alloc-gl-array type length)))
   (dotimes (i length)
   (setf (gl:glaref array i) (aref seq i)))
   array) 
应该解决这部分问题

(defun to-gl-array (seq type
                &aux
                  (length (length seq))
                  (array (gl:alloc-gl-array type length)))
   (dotimes (i length)
   (setf (gl:glaref array i) (aref seq i)))
   array)