我想在没有X的情况下使用OpenGL渲染,而在Google上我找到了它:http : //dvdhrm.wordpress.com/2012/08/11/kmscon-linux-kmsdrm-based-virtual- console/那里说有可能。我应该使用DRM和EGL。EGL可以创建opengl上下文,但需要一个NativeWindow。DRM可能会为我提供NativeWindow,不是吗?我应该使用KMS吗?我知道我必须拥有开源视频驱动程序。我需要完全的OpenGL上下文,但不需要OpenGL ES(Linux)。也许有人知道教程或示例代码?
是的,您需要kms堆栈(示例)。这是Linux下的一个简单示例,它使用OpenGL es,但是使其与OpenGL api兼容的步骤很简单。
在egl属性中设置EGL_RENRERABLE_TYPE为EGL_OPENGL_BIT
EGL_RENRERABLE_TYPE
EGL_OPENGL_BIT
并告诉egl绑定到哪个api:
eglBindAPI(EGL_OPENGL_API);
一定要有最新的内核驱动程序和mesa-dev,libdrm-dev,libgbm- dev。这段代码可在android上移植,将默认的android图形堆栈静默起来并不是那么容易。
mesa-dev
libdrm-dev
libgbm- dev
注意:我在使用32位版本时遇到了麻烦,但仍然不知道为什么。 这些库是积极开发的,因此不确定这不是错误。
note2:取决于您的GLSL版本,是否支持浮点精度。
precision mediump float;
note3:如果您的渗透失败/dev/dri/card0,请授予:
/dev/dri/card0
sudo chmod 666 /dev/dri/card0
或当前用户添加到video组
video
sudo adduser $user video
您也可以为可执行文件设置setguid,并将组设置为video。(也许是最好的选择)