Opengl freeglut(/光):错误:内部错误<;未找到具有必要功能的FBConfig>;在函数fgOpenWindow中
我在Linux服务器(Ubuntu16.04)中安装了OpenGL,没有图形界面,安装命令如下:Opengl freeglut(/光):错误:内部错误<;未找到具有必要功能的FBConfig>;在函数fgOpenWindow中,opengl,x11,glut,freeglut,Opengl,X11,Glut,Freeglut,我在Linux服务器(Ubuntu16.04)中安装了OpenGL,没有图形界面,安装命令如下: apt-get install build-essential libgl1-mesa-dev libglu1-mesa-dev apt-get install freeglut3-dev libglew1.10 libglew-dev libgl1-mesa-glx libxmu-dev apt-get install libglew-dev libsdl2-dev libsdl2-image-d
apt-get install build-essential libgl1-mesa-dev libglu1-mesa-dev
apt-get install freeglut3-dev libglew1.10 libglew-dev libgl1-mesa-glx libxmu-dev
apt-get install libglew-dev libsdl2-dev libsdl2-image-dev libglm-dev libfreetype6-dev
apt-get install mesa-utils
现在,我通过gcc light.c-o light-lGL-lglut
编译light.c
我想通过XMing服务器在我的Windows mechine中显示它。
代码:
glxdemo
,glxgears
,glxheads
也不错
当我运行Xlib
代码时,它很好。编译是通过gcc-o quad-quad.c-lX11-lGL-lGLU进行的
// -- Written in C -- //
#include<stdio.h>
#include<stdlib.h>
#include<X11/X.h>
#include<X11/Xlib.h>
#include<GL/gl.h>
#include<GL/glx.h>
#include<GL/glu.h>
Display *dpy;
Window root;
GLint att[] = { GLX_RGBA, GLX_DEPTH_SIZE, 24, GLX_DOUBLEBUFFER, None };
XVisualInfo *vi;
Colormap cmap;
XSetWindowAttributes swa;
Window win;
GLXContext glc;
XWindowAttributes gwa;
XEvent xev;
void DrawAQuad() {
glClearColor(1.0, 1.0, 1.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-1., 1., -1., 1., 1., 20.);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0., 0., 10., 0., 0., 0., 0., 1., 0.);
glBegin(GL_QUADS);
glColor3f(1., 0., 0.); glVertex3f(-.75, -.75, 0.);
glColor3f(0., 1., 0.); glVertex3f( .75, -.75, 0.);
glColor3f(0., 0., 1.); glVertex3f( .75, .75, 0.);
glColor3f(1., 1., 0.); glVertex3f(-.75, .75, 0.);
glEnd();
}
int main(int argc, char *argv[]) {
dpy = XOpenDisplay(NULL);
if(dpy == NULL) {
printf("\n\tcannot connect to X server\n\n");
exit(0);
}
root = DefaultRootWindow(dpy);
vi = glXChooseVisual(dpy, 0, att);
if(vi == NULL) {
printf("\n\tno appropriate visual found\n\n");
exit(0);
}
else {
printf("\n\tvisual %p selected\n", (void *)vi->visualid); /* %p creates hexadecimal output like in glxinfo */
}
cmap = XCreateColormap(dpy, root, vi->visual, AllocNone);
swa.colormap = cmap;
swa.event_mask = ExposureMask | KeyPressMask;
win = XCreateWindow(dpy, root, 0, 0, 600, 600, 0, vi->depth, InputOutput, vi->visual, CWColormap | CWEventMask, &swa);
XMapWindow(dpy, win);
XStoreName(dpy, win, "VERY SIMPLE APPLICATION");
glc = glXCreateContext(dpy, vi, NULL, GL_TRUE);
glXMakeCurrent(dpy, win, glc);
glEnable(GL_DEPTH_TEST);
while(1) {
XNextEvent(dpy, &xev);
if(xev.type == Expose) {
XGetWindowAttributes(dpy, win, &gwa);
glViewport(0, 0, gwa.width, gwa.height);
DrawAQuad();
glXSwapBuffers(dpy, win);
}
else if(xev.type == KeyPress) {
glXMakeCurrent(dpy, None, NULL);
glXDestroyContext(dpy, glc);
XDestroyWindow(dpy, win);
XCloseDisplay(dpy);
exit(0);
}
} /* this closes while(1) { */
} /* this is the } which closes int main(int argc, char *argv[]) { */
/--用C编写--//
#包括
#包括
#包括
#包括
#包括
#包括
#包括
显示*dpy;
窗根;
GLint att[]={GLX_RGBA,GLX_DEPTH_SIZE,24,GLX_DOUBLEBUFFER,None};
十六、苏亚林福六世;
彩色地图;
XSETWINDOWATTES swa;
窗口赢;
GLXContext-glc;
xgwa;
XEvent-xev;
void DrawAQuad(){
glClearColor(1.0,1.0,1.0,1.0);
glClear(GL_颜色_缓冲_位| GL_深度_缓冲_位);
glMatrixMode(GL_投影);
glLoadIdentity();
格洛托(-1,1.,-1,1,1,20.);
glMatrixMode(GLU模型视图);
glLoadIdentity();
gluLookAt(0,0,10,0,0,0,0,0,1,0.);
glBegin(GL_QUADS);
glColor3f(1,0,0.);glVertex3f(-.75,-.75,0.);
glColor3f(0,1,0.);glVertex3f(.75,-.75,0.);
glColor3f(0,0,1.);glVertex3f(.75,75,0.);
glColor3f(1,1,0.);glVertex3f(-0.75,75,0.);
格伦德();
}
int main(int argc,char*argv[]){
dpy=XOpenDisplay(空);
如果(dpy==NULL){
printf(“\n\t无法连接到X服务器\n\n”);
出口(0);
}
根=默认根窗口(dpy);
vi=glXChooseVisual(dpy,0,att);
如果(vi==NULL){
printf(“\n\t未找到适当的视觉效果\n\n”);
出口(0);
}
否则{
printf(“\n\tvisual%p selected\n”,(void*)vi->visualid);/*%p创建十六进制输出,与glxinfo类似*/
}
cmap=XCreateColormap(dpy、root、vi->visual、allocOne);
swa.colormap=cmap;
swa.event_mask=ExposureMask |按键mask;
win=XCreateWindow(dpy、根、0、0、600、600、0、vi->深度、输入输出、vi->可视、CWColormap | CWEventMask和swa);
XMapWindow(dpy,win);
XStoreName(dpy,win,“非常简单的应用程序”);
glc=glXCreateContext(dpy,vi,NULL,GL_TRUE);
glXMakeCurrent(dpy、win、glc);
glEnable(GLU深度试验);
而(1){
XNextEvent(dpy和xev);
if(xev.type==Expose){
XGetWindowAttributes(dpy、win和gwa);
glViewport(0,0,gwa.width,gwa.height);
DrawAQuad();
glXSwapBuffers(dpy,win);
}
else if(xev.type==按键){
glXMakeCurrent(dpy,无,空);
glXDestroyContext(dpy,glc);
XDestroyWindow(dpy,win);
XCloseDisplay(dpy);
出口(0);
}
}/*当(1){*/
}/*这是关闭int main的}(int argc,char*argv[]){*/
我该怎么办
谢谢
direct rendering: No (LIBGL_ALWAYS_INDIRECT set)
确保您没有与以下内容发生冲突:
2.4.06不会从ubuntu客户端在远程X服务器上渲染
Ubuntu现在似乎正在使用freeglut,当它在本地显示上呈现ok时,它无法通过GLX在远程显示上绘制。可能它没有获得有效的上下文,因为glGetString(GLUT版本)返回null。但是glutGet(GLUT显示模式)是可能的返回true,并且glxgears和glxinfo都工作正常,因此这似乎是一个freelut问题
嗯,您的xlib代码要求双缓冲,而您的GLUT代码只需要单缓冲。谢谢您的回复。我将我的代码从
glutInitDisplayMode(GLUT|single | GLUT|RGB | GLUT|深度);
更改为glutInitDisplayMode(GLUT|双| GLUT| RGBA | GLUT|深度)
:错误:函数fgOpenWindow出现内部错误。请尝试调用glutInitDisplayMode(0)
而不是所有这些参数,然后查看得到的结果。也请尝试glutInitDisplayMode(GLUT\U INDEX)
。感谢您的回复。我运行了演示代码,但得到了不同的结果。GLUT\U DISPLAYMODE\U可能=0
免费GLUT(/测试):错误:函数fgOpenWindow中的内部错误
谢谢,当我在Ubuntu16.04(nvidia jetson tx2)上运行zed mini-stereolabs位置跟踪演示时,这个错误(X over ssh)就是我遇到的。它在本地工作,但不是远程工作,导致标题中的错误。
name of display: :10.0
display: :10 screen: 0
direct rendering: No (LIBGL_ALWAYS_INDIRECT set)
server glx vendor string: SGI
server glx version string: 1.2
server glx extensions:
GLX_ARB_multisample, GLX_EXT_import_context, GLX_EXT_visual_info,
GLX_EXT_visual_rating, GLX_OML_swap_method, GLX_SGIS_multisample,
GLX_SGIX_fbconfig, GLX_SGIX_hyperpipe, GLX_SGIX_swap_barrier,
GLX_SGI_make_current_read
client glx vendor string: NVIDIA Corporation
client glx version string: 1.4
client glx extensions:
GLX_ARB_context_flush_control, GLX_ARB_create_context,
GLX_ARB_create_context_profile, GLX_ARB_create_context_robustness,
GLX_ARB_fbconfig_float, GLX_ARB_get_proc_address, GLX_ARB_multisample,
GLX_EXT_buffer_age, GLX_EXT_create_context_es2_profile,
GLX_EXT_create_context_es_profile, GLX_EXT_fbconfig_packed_float,
GLX_EXT_framebuffer_sRGB, GLX_EXT_import_context, GLX_EXT_stereo_tree,
GLX_EXT_swap_control, GLX_EXT_swap_control_tear,
GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, GLX_EXT_visual_rating,
GLX_NV_copy_buffer, GLX_NV_copy_image, GLX_NV_delay_before_swap,
GLX_NV_float_buffer, GLX_NV_multisample_coverage, GLX_NV_present_video,
GLX_NV_robustness_video_memory_purge, GLX_NV_swap_group,
GLX_NV_video_capture, GLX_NV_video_out, GLX_SGIX_fbconfig,
GLX_SGIX_pbuffer, GLX_SGI_swap_control, GLX_SGI_video_sync
GLX version: 1.2
GLX extensions:
GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context,
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_SGIX_fbconfig
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce GT 705/PCIe/SSE2
OpenGL version string: 1.2 (4.5.0 NVIDIA 368.39)
OpenGL extensions:
GL_ARB_depth_texture, GL_ARB_imaging, GL_ARB_multitexture,
GL_ARB_point_parameters, GL_ARB_point_sprite, GL_ARB_shadow,
GL_ARB_texture_border_clamp, GL_ARB_texture_cube_map,
GL_ARB_texture_env_add, GL_ARB_texture_env_combine,
GL_ARB_texture_env_crossbar, GL_ARB_texture_env_dot3,
GL_ARB_texture_mirrored_repeat, GL_ARB_transpose_matrix,
GL_ARB_window_pos, GL_ATI_texture_mirror_once, GL_EXT_abgr, GL_EXT_bgra,
GL_EXT_blend_color, GL_EXT_blend_func_separate, GL_EXT_blend_minmax,
GL_EXT_blend_subtract, GL_EXT_draw_range_elements, GL_EXT_fog_coord,
GL_EXT_multi_draw_arrays, GL_EXT_packed_pixels, GL_EXT_rescale_normal,
GL_EXT_secondary_color, GL_EXT_separate_specular_color,
GL_EXT_shadow_funcs, GL_EXT_stencil_two_side, GL_EXT_stencil_wrap,
GL_EXT_texture3D, GL_EXT_texture_edge_clamp, GL_EXT_texture_env_add,
GL_EXT_texture_env_combine, GL_EXT_texture_env_dot3, GL_EXT_texture_lod,
GL_EXT_texture_lod_bias, GL_EXT_texture_object, GL_EXT_vertex_array,
GL_IBM_texture_mirrored_repeat, GL_NV_blend_square, GL_NV_point_sprite,
GL_NV_texgen_reflection, GL_NV_texture_rectangle, GL_SGIS_generate_mipmap,
GL_SGIS_texture_lod, GL_SGIX_depth_texture, GL_SGIX_shadow
32 GLX Visuals
visual x bf lv rg d st colorbuffer sr ax dp st accumbuffer ms cav
id dep cl sp sz l ci b ro r g b a F gb bf th cl r g b a ns b eat
----------------------------------------------------------------------------
0x022 24 tc 1 24 0 r . . 8 8 8 0 . . 0 0 0 0 0 0 0 0 0 None
0x023 24 tc 1 24 0 r . . 8 8 8 0 . . 0 0 0 16 16 16 16 0 0 None
0x024 24 tc 1 24 0 r . . 8 8 8 0 . . 0 0 8 0 0 0 0 0 0 None
0x025 24 tc 1 24 0 r . . 8 8 8 0 . . 0 0 8 16 16 16 16 0 0 None
0x026 24 tc 1 24 0 r y . 8 8 8 0 . . 0 0 0 0 0 0 0 0 0 None
0x027 24 tc 1 24 0 r y . 8 8 8 0 . . 0 0 0 16 16 16 16 0 0 None
0x028 24 tc 1 24 0 r y . 8 8 8 0 . . 0 0 8 0 0 0 0 0 0 None
0x029 24 tc 1 24 0 r y . 8 8 8 0 . . 0 0 8 16 16 16 16 1172601720 0 None
0x02a 24 tc 1 24 0 r . . 8 8 8 0 . . 2 0 0 0 0 0 0 1 4 None
0x02b 24 tc 1 24 0 r . . 8 8 8 0 . . 2 0 0 16 16 16 16 0 0 None
0x02c 24 tc 1 24 0 r . . 8 8 8 0 . . 2 0 8 0 0 0 0 26272464 0 None
0x02d 24 tc 1 24 0 r . . 8 8 8 0 . . 2 0 8 16 16 16 16 26259104 0 None
0x02e 24 tc 1 24 0 r y . 8 8 8 0 . . 2 0 0 0 0 0 0 0 0 None
0x02f 24 tc 1 24 0 r y . 8 8 8 0 . . 2 0 0 16 16 16 16 32 0 None
0x030 24 tc 1 24 0 r y . 8 8 8 0 . . 2 0 8 0 0 0 0 0 0 None
0x031 24 tc 1 24 0 r y . 8 8 8 0 . . 2 0 8 16 16 16 16 0 0 None
0x032 24 tc 1 24 0 r . . 8 8 8 0 . . 0 24 0 0 0 0 0 0 0 None
0x033 24 tc 1 24 0 r . . 8 8 8 0 . . 0 24 0 16 16 16 16 0 0 None
0x034 24 tc 1 24 0 r . . 8 8 8 0 . . 0 24 8 0 0 0 0 26262256 1 None
0x035 24 tc 1 24 0 r . . 8 8 8 0 . . 0 24 8 16 16 16 16 26259056 0 None
0x036 24 tc 1 24 0 r y . 8 8 8 0 . . 0 24 0 0 0 0 0 0 0 None
0x037 24 tc 1 24 0 r y . 8 8 8 0 . . 0 24 0 16 16 16 16 0 0 None
0x038 24 tc 1 24 0 r y . 8 8 8 0 . . 0 24 8 0 0 0 0 0 0 None
0x039 24 tc 1 24 0 r y . 8 8 8 0 . . 0 24 8 16 16 16 16 0 0 None
0x03a 24 tc 1 24 0 r . . 8 8 8 0 . . 2 24 0 0 0 0 0 0 0 None
0x03b 24 tc 1 24 0 r . . 8 8 8 0 . . 2 24 0 16 16 16 16 0 0 None
0x03c 24 tc 1 24 0 r . . 8 8 8 0 . . 2 24 8 0 0 0 0 0 0 None
0x03d 24 tc 1 24 0 r . . 8 8 8 0 . . 2 24 8 16 16 16 16 0 0 None
0x03e 24 tc 1 24 0 r y . 8 8 8 0 . . 2 24 0 0 0 0 0 0 0 None
0x03f 24 tc 1 24 0 r y . 8 8 8 0 . . 2 24 0 16 16 16 16 0 0 None
0x040 24 tc 1 24 0 r y . 8 8 8 0 . . 2 24 8 0 0 0 0 0 0 None
0x041 24 tc 1 24 0 r y . 8 8 8 0 . . 2 24 8 16 16 16 16 0 0 None
32 GLXFBConfigs:
visual x bf lv rg d st colorbuffer sr ax dp st accumbuffer ms cav
id dep cl sp sz l ci b ro r g b a F gb bf th cl r g b a ns b eat
----------------------------------------------------------------------------
0x022 24 tc 1 24 0 . . 8 8 8 0 . . 0 0 0 0 0 0 0 0 0 None
0x023 24 tc 1 24 0 . . 8 8 8 0 . . 0 0 0 16 16 16 16 0 0 None
0x024 24 tc 1 24 0 . . 8 8 8 0 . . 0 0 8 0 0 0 0 0 0 None
0x025 24 tc 1 24 0 . . 8 8 8 0 . . 0 0 8 16 16 16 16 0 0 None
0x026 24 tc 1 24 0 y . 8 8 8 0 . . 0 0 0 0 0 0 0 0 0 None
0x027 24 tc 1 24 0 y . 8 8 8 0 . . 0 0 0 16 16 16 16 0 0 None
0x028 24 tc 1 24 0 y . 8 8 8 0 . . 0 0 8 0 0 0 0 0 0 None
0x029 24 tc 1 24 0 y . 8 8 8 0 . . 0 0 8 16 16 16 16 0 0 None
0x02a 24 tc 1 24 0 . . 8 8 8 0 . . 2 0 0 0 0 0 0 0 0 None
0x02b 24 tc 1 24 0 . . 8 8 8 0 . . 2 0 0 16 16 16 16 0 0 None
0x02c 24 tc 1 24 0 . . 8 8 8 0 . . 2 0 8 0 0 0 0 0 0 None
0x02d 24 tc 1 24 0 . . 8 8 8 0 . . 2 0 8 16 16 16 16 0 0 None
0x02e 24 tc 1 24 0 y . 8 8 8 0 . . 2 0 0 0 0 0 0 0 0 None
0x02f 24 tc 1 24 0 y . 8 8 8 0 . . 2 0 0 16 16 16 16 0 0 None
0x030 24 tc 1 24 0 y . 8 8 8 0 . . 2 0 8 0 0 0 0 0 0 None
0x031 24 tc 1 24 0 y . 8 8 8 0 . . 2 0 8 16 16 16 16 0 0 None
0x032 24 tc 1 24 0 . . 8 8 8 0 . . 0 24 0 0 0 0 0 0 0 None
0x033 24 tc 1 24 0 . . 8 8 8 0 . . 0 24 0 16 16 16 16 0 0 None
0x034 24 tc 1 24 0 . . 8 8 8 0 . . 0 24 8 0 0 0 0 0 0 None
0x035 24 tc 1 24 0 . . 8 8 8 0 . . 0 24 8 16 16 16 16 0 0 None
0x036 24 tc 1 24 0 y . 8 8 8 0 . . 0 24 0 0 0 0 0 0 0 None
0x037 24 tc 1 24 0 y . 8 8 8 0 . . 0 24 0 16 16 16 16 0 0 None
0x038 24 tc 1 24 0 y . 8 8 8 0 . . 0 24 8 0 0 0 0 0 0 None
0x039 24 tc 1 24 0 y . 8 8 8 0 . . 0 24 8 16 16 16 16 0 0 None
0x03a 24 tc 1 24 0 . . 8 8 8 0 . . 2 24 0 0 0 0 0 0 0 None
0x03b 24 tc 1 24 0 . . 8 8 8 0 . . 2 24 0 16 16 16 16 0 0 None
0x03c 24 tc 1 24 0 . . 8 8 8 0 . . 2 24 8 0 0 0 0 0 0 None
0x03d 24 tc 1 24 0 . . 8 8 8 0 . . 2 24 8 16 16 16 16 0 0 None
0x03e 24 tc 1 24 0 y . 8 8 8 0 . . 2 24 0 0 0 0 0 0 0 None
0x03f 24 tc 1 24 0 y . 8 8 8 0 . . 2 24 0 16 16 16 16 0 0 None
0x040 24 tc 1 24 0 y . 8 8 8 0 . . 2 24 8 0 0 0 0 0 0 None
0x041 24 tc 1 24 0 y . 8 8 8 0 . . 2 24 8 16 16 16 16 0 0 None
// -- Written in C -- //
#include<stdio.h>
#include<stdlib.h>
#include<X11/X.h>
#include<X11/Xlib.h>
#include<GL/gl.h>
#include<GL/glx.h>
#include<GL/glu.h>
Display *dpy;
Window root;
GLint att[] = { GLX_RGBA, GLX_DEPTH_SIZE, 24, GLX_DOUBLEBUFFER, None };
XVisualInfo *vi;
Colormap cmap;
XSetWindowAttributes swa;
Window win;
GLXContext glc;
XWindowAttributes gwa;
XEvent xev;
void DrawAQuad() {
glClearColor(1.0, 1.0, 1.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-1., 1., -1., 1., 1., 20.);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0., 0., 10., 0., 0., 0., 0., 1., 0.);
glBegin(GL_QUADS);
glColor3f(1., 0., 0.); glVertex3f(-.75, -.75, 0.);
glColor3f(0., 1., 0.); glVertex3f( .75, -.75, 0.);
glColor3f(0., 0., 1.); glVertex3f( .75, .75, 0.);
glColor3f(1., 1., 0.); glVertex3f(-.75, .75, 0.);
glEnd();
}
int main(int argc, char *argv[]) {
dpy = XOpenDisplay(NULL);
if(dpy == NULL) {
printf("\n\tcannot connect to X server\n\n");
exit(0);
}
root = DefaultRootWindow(dpy);
vi = glXChooseVisual(dpy, 0, att);
if(vi == NULL) {
printf("\n\tno appropriate visual found\n\n");
exit(0);
}
else {
printf("\n\tvisual %p selected\n", (void *)vi->visualid); /* %p creates hexadecimal output like in glxinfo */
}
cmap = XCreateColormap(dpy, root, vi->visual, AllocNone);
swa.colormap = cmap;
swa.event_mask = ExposureMask | KeyPressMask;
win = XCreateWindow(dpy, root, 0, 0, 600, 600, 0, vi->depth, InputOutput, vi->visual, CWColormap | CWEventMask, &swa);
XMapWindow(dpy, win);
XStoreName(dpy, win, "VERY SIMPLE APPLICATION");
glc = glXCreateContext(dpy, vi, NULL, GL_TRUE);
glXMakeCurrent(dpy, win, glc);
glEnable(GL_DEPTH_TEST);
while(1) {
XNextEvent(dpy, &xev);
if(xev.type == Expose) {
XGetWindowAttributes(dpy, win, &gwa);
glViewport(0, 0, gwa.width, gwa.height);
DrawAQuad();
glXSwapBuffers(dpy, win);
}
else if(xev.type == KeyPress) {
glXMakeCurrent(dpy, None, NULL);
glXDestroyContext(dpy, glc);
XDestroyWindow(dpy, win);
XCloseDisplay(dpy);
exit(0);
}
} /* this closes while(1) { */
} /* this is the } which closes int main(int argc, char *argv[]) { */
direct rendering: No (LIBGL_ALWAYS_INDIRECT set)