이 문제는 큰 문제입니다. 우선 XLib API에 대해 비트를 알고 있지만 테스트하기를 원했고, 실제로 내가 OpenGL 렌더링 컨텍스트 (3.0)를 만들 수 있는지 확인하기를 원했기 때문에 테스트 코드를 복사하여 붙여 넣기 만하면됩니다.OpenGL 렌더링 컨텍스트 "실패한 요청 152 (GLX)의 opcode"(Mesa 8.0 - OpenGL 3.0, Linux)
GLX_ARB_get_proc_address GLX_ARB_multisample GLX_EXT_import_context GLX_EXT_visual_info GLX_EXT_visual_rating GLX_MESA_copy_sub_buffer GLX_MESA_multithread_makecurrent GLX_MESA_swap_control GLX_OML_swap_method GLX_OML_sync_control GLX_SGI_make_current_read GLX_SGI_swap_control GLX_SGI_video_sync GLX_SGIS_multisample GLX_SGIX_fbconfig GLX_SGIX_pbuffer GLX_SGIX_visual_select_group GLX_EXT_texture_from_pixmap
Getting framebuffer config
Getting XVisualInfo
Creating colormap
Creating window
Mapping window
Creating context
X Error of failed request: BadRequest (invalid request code or no such operation)
Major opcode of failed request: 152 (GLX)
Minor opcode of failed request: 34()
Serial number of failed request: 27
Current serial number in output stream: 26
을 더욱 더 내 수, glxinfo
에 대한 후속 호출은이 사양에 따라
name of display: :0
display: :0 screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.4
server glx extensions:
GLX_ARB_multisample, GLX_EXT_import_context, GLX_EXT_texture_from_pixmap,
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_copy_sub_buffer,
GLX_OML_swap_method, GLX_SGI_swap_control, GLX_SGIS_multisample,
GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group,
GLX_INTEL_swap_event
client glx vendor string: Mesa Project and SGI
client glx version string: 1.4
client glx extensions:
GLX_ARB_create_context, GLX_ARB_create_context_profile,
GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context,
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_EXT_framebuffer_sRGB,
GLX_EXT_create_context_es2_profile, GLX_MESA_copy_sub_buffer,
GLX_MESA_multithread_makecurrent, GLX_MESA_swap_control,
GLX_OML_swap_method, GLX_OML_sync_control, GLX_SGI_make_current_read,
GLX_SGI_swap_control, GLX_SGI_video_sync, GLX_SGIS_multisample,
GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group,
GLX_EXT_texture_from_pixmap, GLX_INTEL_swap_event
GLX version: 1.4
GLX extensions:
GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context,
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_copy_sub_buffer,
GLX_MESA_multithread_makecurrent, GLX_MESA_swap_control,
GLX_OML_swap_method, GLX_OML_sync_control, GLX_SGI_make_current_read,
GLX_SGI_swap_control, GLX_SGI_video_sync, GLX_SGIS_multisample,
GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group,
GLX_EXT_texture_from_pixmap
OpenGL vendor string: Tungsten Graphics, Inc
OpenGL renderer string: Mesa DRI Intel(R) Sandybridge Mobile
OpenGL version string: 3.0 Mesa 8.0
OpenGL shading language version string: 1.30
OpenGL extensions:
GL_ARB_multisample, GL_EXT_abgr, GL_EXT_bgra, GL_EXT_blend_color,
GL_EXT_blend_minmax, GL_EXT_blend_subtract, GL_EXT_copy_texture,
GL_EXT_polygon_offset, GL_EXT_subtexture, GL_EXT_texture_object,
GL_EXT_vertex_array, GL_EXT_compiled_vertex_array, GL_EXT_texture,
GL_EXT_texture3D, GL_IBM_rasterpos_clip, GL_ARB_point_parameters,
GL_EXT_draw_range_elements, GL_EXT_packed_pixels, GL_EXT_point_parameters,
GL_EXT_rescale_normal, GL_EXT_separate_specular_color,
GL_EXT_texture_edge_clamp, GL_SGIS_generate_mipmap,
GL_SGIS_texture_border_clamp, GL_SGIS_texture_edge_clamp,
GL_SGIS_texture_lod, GL_ARB_framebuffer_sRGB, GL_ARB_multitexture,
GL_EXT_framebuffer_sRGB, GL_IBM_multimode_draw_arrays,
GL_IBM_texture_mirrored_repeat, GL_3DFX_texture_compression_FXT1,
GL_ARB_texture_cube_map, GL_ARB_texture_env_add, GL_ARB_transpose_matrix,
GL_EXT_blend_func_separate, GL_EXT_fog_coord, GL_EXT_multi_draw_arrays,
GL_EXT_secondary_color, GL_EXT_texture_env_add,
GL_EXT_texture_filter_anisotropic, GL_EXT_texture_lod_bias,
GL_INGR_blend_func_separate, GL_NV_blend_square, GL_NV_light_max_exponent,
GL_NV_texgen_reflection, GL_NV_texture_env_combine4,
GL_SUN_multi_draw_arrays, GL_ARB_texture_border_clamp,
GL_ARB_texture_compression, GL_EXT_framebuffer_object,
GL_EXT_texture_env_combine, GL_EXT_texture_env_dot3, GL_MESA_window_pos,
GL_NV_packed_depth_stencil, GL_NV_texture_rectangle, GL_NV_vertex_program,
GL_ARB_depth_texture, GL_ARB_occlusion_query, GL_ARB_shadow,
GL_ARB_texture_env_combine, GL_ARB_texture_env_crossbar,
GL_ARB_texture_env_dot3, GL_ARB_texture_mirrored_repeat,
GL_ARB_window_pos, GL_ATI_envmap_bumpmap, GL_EXT_stencil_two_side,
GL_EXT_texture_cube_map, GL_NV_depth_clamp, GL_NV_vertex_program1_1,
GL_APPLE_packed_pixels, GL_APPLE_vertex_array_object, GL_ARB_draw_buffers,
GL_ARB_fragment_program, GL_ARB_fragment_shader, GL_ARB_shader_objects,
GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_ATI_draw_buffers,
GL_ATI_texture_env_combine3, GL_ATI_texture_float, GL_EXT_shadow_funcs,
GL_EXT_stencil_wrap, GL_MESA_pack_invert, GL_MESA_ycbcr_texture,
GL_ARB_depth_clamp, GL_ARB_fragment_program_shadow,
GL_ARB_half_float_pixel, GL_ARB_point_sprite, GL_ARB_shading_language_100,
GL_ARB_sync, GL_ARB_texture_non_power_of_two, GL_ARB_vertex_buffer_object,
GL_ATI_blend_equation_separate, GL_EXT_blend_equation_separate,
GL_OES_read_format, GL_ARB_color_buffer_float, GL_ARB_pixel_buffer_object,
GL_ARB_texture_compression_rgtc, GL_ARB_texture_float,
GL_ARB_texture_rectangle, GL_EXT_packed_float, GL_EXT_pixel_buffer_object,
GL_EXT_texture_compression_rgtc, GL_EXT_texture_rectangle,
GL_EXT_texture_sRGB, GL_EXT_texture_shared_exponent,
GL_ARB_framebuffer_object, GL_EXT_framebuffer_blit,
GL_EXT_framebuffer_multisample, GL_EXT_packed_depth_stencil,
GL_APPLE_object_purgeable, GL_ARB_vertex_array_object,
GL_ATI_separate_stencil, GL_EXT_draw_buffers2,
GL_EXT_gpu_program_parameters, GL_EXT_texture_array,
GL_EXT_texture_integer, GL_EXT_texture_sRGB_decode, GL_EXT_timer_query,
GL_OES_EGL_image, GL_MESA_texture_array, GL_ARB_copy_buffer,
GL_ARB_depth_buffer_float, GL_ARB_half_float_vertex,
GL_ARB_map_buffer_range, GL_ARB_texture_rg, GL_ARB_texture_swizzle,
GL_ARB_vertex_array_bgra, GL_EXT_separate_shader_objects,
GL_EXT_texture_swizzle, GL_EXT_vertex_array_bgra,
GL_NV_conditional_render, GL_ARB_ES2_compatibility,
GL_ARB_draw_elements_base_vertex, GL_ARB_explicit_attrib_location,
GL_ARB_fragment_coord_conventions, GL_ARB_provoking_vertex,
GL_ARB_sampler_objects, GL_ARB_seamless_cube_map,
GL_ARB_shader_texture_lod, GL_EXT_provoking_vertex, GL_EXT_texture_snorm,
GL_MESA_texture_signed_rgba, GL_ARB_robustness, GL_EXT_transform_feedback
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
을 생산 : 나는이 코드를 실행하면 다음과 같이
, 내 출력은 작동해야합니까? 그렇지 않다면 변경하기 위해 내가 할 수있는 일이 있습니까? 이와 같은 문제에 관해 읽은 포럼 게시물은 일반적으로 컨텍스트를 초기화 할 때 OpenGL 3.x의 적절한 구현이 부족하여 테스트 한 코드와 비슷한 결과를 얻는 사람들이 있었기 때문입니다 .
필자는 배포본에 대한 다양한 X11 패키지를 검색하여 일부 기회가 누락되었거나 누락 된 것인지 여부를 확인했습니다. 물론, 이것은 아무 것도 쓸데 없었습니다. 은을 만들었습니다. 설치/변경된 것 중 하나가 더 나쁘거나 제대로 작동하지 않았습니다.
xorg.conf로
Section "Module"
SubSection "extmod"
Option "omit xfree86-dga"
EndSubSection
Load "i2c"
Load "ddc"
Load "vbe"
Load "dri"
Load "glx"
Load "synaptics"
Load "drm"
EndSection
Section "ServerFlags"
Option "AllowMouseOpenFail" "true"
EndSection
Section "Monitor"
Identifier "Generic Monitor"
VertRefresh 43 - 60
HorizSync 28 - 80
EndSection
Section "Device"
Identifier "SabayonVga0"
Driver "intel"
#BusID "PCI:00:02"
#Option "RenderAccel" "on"
#Option "XAANoOffscreenPixmaps"
#Option "BusType" "PCI"
#Option "ColorTiling" "on"
#Option "EnablePageFlip" "on"
# UseEvents is causing segmentation faults with
# NVIDIA 6xxx, 7xxx and >=275.xx.xx drivers
#Option "UseEvents" "True"
Option "LogoPath" "/usr/share/backgrounds/sabayonlinux-nvidia.png"
EndSection
Section "Screen"
Identifier "Screen 0"
Device "SabayonVga0"
Monitor "Generic Monitor"
Option "AddARGBGLXVisuals" "true"
DefaultDepth 24
SubSection "Display"
Depth 8
ViewPort 0 0
#Modes "1024x768" "800x600" "640x480"
EndSubsection
SubSection "Display"
Depth 16
ViewPort 0 0
#Modes "1024x768" "800x600" "640x480"
EndSubsection
SubSection "Display"
Depth 24
ViewPort 0 0
#Modes "1024x768" "800x600" "640x480"
EndSubsection
EndSection
Section "DRI"
Mode 0666
EndSection
Section "ServerLayout"
Identifier "Main Layout"
Screen 0 "Screen 0"
EndSection
Section "Extensions"
#Option "Composite" "Enable"
EndSection
실행되는 코드 내가 꽤 어떻게 이런 일이 수에 관한 난처한 상황에 빠진거야
#include <GL/glx.h>
#include <GL/gl.h>
#include <unistd.h>
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#define GLX_CONTEXT_MAJOR_VERSION_ARB 0x2091
#define GLX_CONTEXT_MINOR_VERSION_ARB 0x2092
typedef GLXContext (*glXCreateContextAttribsARBProc)(Display*, GLXFBConfig, GLXContext, Bool, const int*);
int main (int argc, char ** argv)
{
Display *display = XOpenDisplay(0);
glXCreateContextAttribsARBProc glXCreateContextAttribsARB = NULL;
const char *extensions = glXQueryExtensionsString(display, DefaultScreen(display));
std::cout << extensions << std::endl;
static int visual_attribs[] =
{
GLX_RENDER_TYPE, GLX_RGBA_BIT,
GLX_DRAWABLE_TYPE, GLX_WINDOW_BIT,
GLX_DOUBLEBUFFER, true,
GLX_RED_SIZE, 1,
GLX_GREEN_SIZE, 1,
GLX_BLUE_SIZE, 1,
None
};
std::cout << "Getting framebuffer config" << std::endl;
int fbcount;
GLXFBConfig *fbc = glXChooseFBConfig(display, DefaultScreen(display), visual_attribs, &fbcount);
if (!fbc)
{
std::cout << "Failed to retrieve a framebuffer config" << std::endl;
return 1;
}
std::cout << "Getting XVisualInfo" << std::endl;
XVisualInfo *vi = glXGetVisualFromFBConfig(display, fbc[0]);
XSetWindowAttributes swa;
std::cout << "Creating colormap" << std::endl;
swa.colormap = XCreateColormap(display, RootWindow(display, vi->screen), vi->visual, AllocNone);
swa.border_pixel = 0;
swa.event_mask = StructureNotifyMask;
std::cout << "Creating window" << std::endl;
Window win = XCreateWindow(display, RootWindow(display, vi->screen), 0, 0, 100, 100, 0, vi->depth, InputOutput, vi->visual, CWBorderPixel|CWColormap|CWEventMask, &swa);
if (!win)
{
std::cout << "Failed to create window." << std::endl;
return 1;
}
std::cout << "Mapping window" << std::endl;
XMapWindow(display, win);
// Create an oldstyle context first, to get the correct function pointer for glXCreateContextAttribsARB
GLXContext ctx_old = glXCreateContext(display, vi, 0, GL_TRUE);
glXCreateContextAttribsARB = (glXCreateContextAttribsARBProc)glXGetProcAddress((const GLubyte*)"glXCreateContextAttribsARB");
glXMakeCurrent(display, 0, 0);
glXDestroyContext(display, ctx_old);
if (glXCreateContextAttribsARB == NULL)
{
std::cout << "glXCreateContextAttribsARB entry point not found. Aborting." << std::endl;
return false;
}
static int context_attribs[] =
{
GLX_CONTEXT_MAJOR_VERSION_ARB, 3,
GLX_CONTEXT_MINOR_VERSION_ARB, 0,
None
};
std::cout << "Creating context" << std::endl;
GLXContext ctx = glXCreateContextAttribsARB(display, fbc[0], NULL, true, context_attribs);
if (!ctx)
{
std::cout << "Failed to create GL3 context." << std::endl;
return 1;
}
std::cout << "Making context current" << std::endl;
glXMakeCurrent(display, win, ctx);
glClearColor (0, 0.5, 1, 1);
glClear (GL_COLOR_BUFFER_BIT);
glXSwapBuffers (display, win);
sleep(1);
glClearColor (1, 0.5, 0, 1);
glClear (GL_COLOR_BUFFER_BIT);
glXSwapBuffers (display, win);
sleep(1);
ctx = glXGetCurrentContext();
glXMakeCurrent(display, 0, 0);
glXDestroyContext(display, ctx);
}
. 누군가이 문제에 대한 통찰력 및/또는 해결책을 제공해 주시겠습니까?
참고 : 이것은 OpenGL 위키에 있습니다. http://www.opengl.org/wiki/Tutorial:_OpenGL_3.0_Context_Creation_(GLX) – datenwolf
@datenwolf 비어있는 위키 페이지입니다. –
@VJovic : 클릭하면 스택 오버플로 링크는')'을 가져 와서 URL에 추가하면 작동합니다. – datenwolf