我正在尝试使用 osmesa(屏幕外台面)创建 OpenGL 上下文。我希望在没有窗口的情况下使用 mesa 的软件实现并将渲染输出保存到 png 文件。
http://www.mesa3d.org/osmesa.html
我使用以下内容创建了一个 GL 上下文:
OSMesaContext context = OSMesaCreateContext(GL_RGBA, NULL);
OSMesaMakeCurrent(context, buffer, GL_UNSIGNED_BYTE, width, height);
Run Code Online (Sandbox Code Playgroud)
但是,当我调用glGetString(GL_VERSION)版本是2.1 Mesa 10.1.1. 正如预期的那样,我的 GLSL ES 着色器都没有编译。使用 SDL 时,我可以提供版本提示并创建 GLES 2.0 上下文。
如何指定由 osmesa 创建的 GL 上下文的版本?
我是CMake和OpenGL 的新手。我现在需要在我的 Ubuntu 15.04 64 位 PC 上的项目中使用OpenGL作为库,该 PC 由CMake 3.0.2构建。
我已经为此工作了几天,几乎感到沮丧。我对一堆问题感到困惑。
首先,我使用 command安装了mesa包sudo apt-get install mesa-common-dev,这让我得到了mesa 10.5.2。
然后我浏览包文件dpkg -L mesa-common-dev:
/.
/usr
/usr/share
/usr/share/bug
...
/usr/share/bug/mesa-common-dev/control
/usr/share/doc
...
/usr/share/doc/mesa-common-dev/faq.html
/usr/lib
/usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu/pkgconfig
/usr/lib/x86_64-linux-gnu/pkgconfig/dri.pc
/usr/include
/usr/include/GL
/usr/include/GL/gl.h
...
/usr/include/GL/glx_mangle.h
Run Code Online (Sandbox Code Playgroud)
问题 1:共享库 (.so) 和静态库 (.a) 在哪里?
我现在有一个CMakeLists.txt, 名为 OpenGL 模块OPENGL
...
find_package(OPENGL REQUIRED) # here is CMakeLists.txt:45
... …Run Code Online (Sandbox Code Playgroud) 最近我尝试在 Linux 下使用 MSAA(多样本抗锯齿)。结果令人惊讶:对于 Nvidia 专有驱动程序,一切都像魅力一样工作,但是对于 nouveau 驱动程序,它不起作用。奇怪的是,glxingo 说支持 GLX_ARB_multisample 并且我能够在 GLX_SAMPLE_BUFFERS 设置为 1 和 GLX_SAMPLES 设置为 4(或 8)的情况下获得适当的 FBConfig。但是在渲染时,图片没有应用抗锯齿。我的项目和 freeglut 都存在这个问题,所以我将提供一个基于 glut 的小程序来演示这个问题:
/*
* Test multisampling and polygon smoothing.
*
* Brian Paul
* 4 November 2002
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <GL/glut.h>
static GLfloat Zrot = 0;
static GLboolean Anim = GL_TRUE;
static GLboolean HaveMultisample = GL_TRUE;
static GLboolean DoMultisample = GL_TRUE;
static void
PrintString(const char *s)
{
while (*s) {
glutBitmapCharacter(GLUT_BITMAP_8_BY_13, (int) *s); …Run Code Online (Sandbox Code Playgroud) 我已经在我的电脑上新安装了Fedora 19 x86_64.我写了一个简单的OpenGL程序,但未能编译它.
gcc -o quad quad.c -lX11 -lGL -lGLU
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-redhat-linux/4.8.1/../.. /../libGL.so when searching for -lGL
/usr/bin/ld: skipping incompatible /lib/libGL.so when searching for -lGL
/usr/bin/ld: skipping incompatible /usr/lib/libGL.so when searching for -lGL
/usr/bin/ld: cannot find -lGL
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
我有MesaGL和其他库(即/ usr/lib)然后出了什么问题?
我在Mesa网站的编译/安装页面上完成了所有步骤,并阅读了常见问题解答.您发送给scons进行编译的最终命令会在python脚本中引发错误.这是我的输出.我究竟做错了什么?如果有人使用最新的台面和mingw或VS2012编译了dsa用于台面,那么请分享!
这是我的输出,我没有在很长一段时间内编写python,但看起来地图/字典不包含键/值对.
C:\Downloads\MesaLib-9.1.5\Mesa-9.1.5>scons platform=windows toolchain=crossming
w machine=x86_64 mesagdi libgl-gdi
scons: Reading SConscript files ...
KeyError: 'CCVERSION':
File "C:\Downloads\MesaLib-9.1.5\Mesa-9.1.5\SConstruct", line 40:
ENV = os.environ,
File "C:\Python27\scons-2.3.0\SCons\Environment.py", line 1002:
apply_tools(self, tools, toolpath)
File "C:\Python27\scons-2.3.0\SCons\Environment.py", line 106:
env.Tool(tool)
File "C:\Python27\scons-2.3.0\SCons\Environment.py", line 1786:
tool(self)
File "C:\Python27\scons-2.3.0\SCons\Tool\__init__.py", line 183:
self.generate(env, *args, **kw)
File "C:\Downloads\MesaLib-9.1.5\Mesa-9.1.5\scons\gallium.py", line 313:
ccversion = env['CCVERSION']
File "C:\Python27\scons-2.3.0\SCons\Environment.py", line 412:
return self._dict[key]
Run Code Online (Sandbox Code Playgroud) 是否可以为“山狮”编译Mesa。我的Intel HD Graphics 2000 Mobile不被支持,如果我将驱动程序(kext)移回/ System / Library / Extensions /,则我的卡在灰屏上,则OpenGL加速不起作用。我正在考虑使用Mesa代替Mac OS X内置的OpenGL。是否可以通过某种方式进行编译?
我想强制chrome使用软件驱动程序而不是硬件来渲染WebGL.
我正在使用Ubuntu Linux,我知道在启动程序时,可以通过指定环境变量LIBGL_ALWAYS_SOFTWARE = 1来强制使用Mesa GL驱动程序.我确认在指定env var时驱动程序发生了变化.
bash$ glxinfo | grep -i "opengl"
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) 945GM x86/MMX/SSE2
OpenGL version string: 1.4 Mesa 10.1.3
OpenGL extensions:
bash$ LIBGL_ALWAYS_SOFTWARE=1 glxinfo | grep -i "opengl"
OpenGL vendor string: VMware, Inc.
OpenGL renderer string: Gallium 0.4 on llvmpipe (LLVM 3.4, 128 bits)
OpenGL version string: 2.1 Mesa 10.1.3
OpenGL shading language version string: 1.30
OpenGL extensions:
Run Code Online (Sandbox Code Playgroud)
默认的GL驱动程序提供OpenGL 1.4支持,软件驱动程序提供OpenGL 2.1支持.
我追踪桌面启动器所在的位置(/ …
我想用 GLTransition 过滤器构建 FFMPEG。我按照此链接中的构建说明进行操作
我还安装了 FFMPEG 构建(GLU 和 GLEW 库)的所有依赖项,并使用 EGL 配置它。
我配置的命令是:
./configure --extra-libs='-lGLEW -lEGL' --enable-filter=gltransition --disable-x86asm
Run Code Online (Sandbox Code Playgroud)
执行此命令后,Enabled Filter 日志中会出现 GLTransition 过滤器。我已经使用命令检查了 GLTransition 过滤器:
./ffmpeg -v 0 -filters | grep gltransition
Run Code Online (Sandbox Code Playgroud)
但它什么也没显示。
然后还使用下面的 ffmpeg 命令进行交叉检查:
./ffmpeg -i media/0.mp4 -i media/1.mp4 -filter_complex gltransition -y out.mp4
Run Code Online (Sandbox Code Playgroud)
但它显示错误,例如
[AVFilterGraph @ 0x1febe80] No such filter: 'gltransition'
Error initializing complex filters.
Invalid argument.
Run Code Online (Sandbox Code Playgroud)
我是不是错过了什么?
我发现我无法理解gallium 3D Architecture中的winsys界面。winsys模块是什么?winsys和X server是什么关系?
当我尝试import cv2在 python 中时,我收到以下错误:
ImportError: libGL.so.1: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我发现这个线程,其建议我安装libgl1-mesa-glx,但我不知道如果这是仅适用于Ubuntu的,因为我在CentOS,当我尝试sudo yum install libgl1-mesa-glx,我得到No package libgl1-mesa-glx available.另外,当我添加了安装到我的dockerfile我得到这个错误:The command '/bin/sh -c yum install libgl1-mesa-glx' returned a non-zero code: 1
然后我找到了一个看起来像Fedora 的解决方案来解决同样的问题,说使用mesa-libGL-devel. 当我sudo yum install mesa-libGL-devel看起来安装正确时,但是当我将它添加到我的 dockerfile 时,我得到了The command '/bin/sh -c yum install mesa-libGL-devel' returned a non-zero code: 1.
我还应该尝试什么?
编辑:这是Dockerfile:
FROM nvidia/cuda:10.1-cudnn7-devel-centos7
WORKDIR /app/ …Run Code Online (Sandbox Code Playgroud)