c - Ubuntu 15.04 Mesa and SDL implementation -
been while since i've needed ask question,
i'm trying out sdl2 , opengl (3.3 compatibility limit mesa) because glsl interests me, on work machine learned isn't easy things work. every tutorial i've used , mesa demos use headers don't come ubuntu's base gl library, i've resigned , installed glew doesn't feel right continously adding libraries make things work, gl headers have are:
glcorearb.h, glew.h, glext.h, gl.h, gl_mangle.h, glu.h, glu_mangle.h, glxew.h, glxext.h, glx.h, glxint.h, glx_mangle.h, glxmd.h, glxproto.h, glxtokens.h, wglew.h i tried following lazyfoo's tutorials did not have same result of getting white quad appear. followed opengl-tutorial's tutorials , did not same result of white triangle appear (it mentions not worry if don't see @ first, doesn't explain in case doesn't (i tried follow rest of tutorial, i'm writing in c , not c++ i'm worried straying far tutorials' , confusing issue further. i've installed sdl2 , made sure had everything. code have in current sdl2/gl program, not @ reveal white triangle, it's combination of tutorials, i've read sdl api material make sure nothing on sdl side affects gl tries do.
#define sdl_assert_level 3 #include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <sdl2/sdl.h> #include <sdl2/sdl_error.h> #include <sdl2/sdl_assert.h> #include <sdl2/sdl_version.h> #include <sdl2/sdl_events.h> #include <gl/gl.h> int main(){ sdl_version compiledwith, linkedwith; sdl_version(&compiledwith); sdl_getversion(&linkedwith); if(sdl_init(sdl_init_video|sdl_init_audio) < 0){ fprintf(stderr, "\nunable initialize sdl: %s\n", sdl_geterror()); exit(1); } sdl_log("\ncompiled with: %d.%d.%d\n", compiledwith.major, compiledwith.minor, compiledwith.patch); sdl_log("\nlinked with: %d.%d.%d\n", linkedwith.major, linkedwith.minor, linkedwith.patch); sdl_window* window = sdl_createwindow("sdl2/opengl demo", 0, 0, 640, 480, sdl_window_opengl|sdl_window_resizable); //can make gl calls after below line sdl_glcontext glcontext = sdl_gl_createcontext(window); gluint vertexarrayid; glgenvertexarrays(1, &vertexarrayid); glbindvertexarray(vertexarrayid); static const glfloat gvertexbufferdata[] = { -1.0f, -1.0f, 0.0f, 1.0f, -1.0f, 0.0f, 0.0f, 1.0f, 0.0f, }; gluint vertexbuffer; glgenbuffers(1, &vertexbuffer); glbindbuffer(gl_array_buffer, vertexbuffer); glbufferdata(gl_array_buffer, sizeof(gvertexbufferdata), gvertexbufferdata, gl_static_draw); glenablevertexattribarray(0); glbindbuffer(gl_array_buffer, vertexbuffer); glvertexattribpointer( 0, 3, gl_float, gl_false, 0, (void*)0 ); gldrawarrays(gl_triangles, 0, 3); gldisablevertexattribarray(0); glclearcolor(0,0,0,1); glclear(gl_color_buffer_bit); sdl_gl_swapwindow(window); sdl_event theevent; bool running = true; while(running){ while(sdl_pollevent(&theevent)){ switch(theevent.type){ case sdl_quit: sdl_log("\nquit request acknowledged\n"); //finish gl usage sdl_gl_deletecontext(glcontext); //finish sdl usage sdl_quit(); running = false; break; default: break; } } } return 0; } i use gcc main.c -lsdl2 -lgl -o test linking, suspect might missing linkage libraries i'm not sure can check if or not, compiler doesn't warn me can't find unless follow tutorial uses don't have.
to conclude since longer post anticipated, question is:
- am missing important library work on system (ubuntu 15.04 intel haswell mobile x86/mmx/sse2)?
- did miss in code necessary see white triangle?
Comments
Post a Comment