LRender* LRender_create(void) { info(L"Init Render"); LRender* render = calloc(1, sizeof(LRender)); _create_opengl_context(render, 800, 600); initOpenGLExt(); print_opengl_info(); render->target = LRenderTarget_create(800, 600); render->camera = LRenderCamera_create(); //LRenderCamera_set_target(render->camera, render->target); //LRenderCamera_set_shader(render->camera, LRenderShader_create_from_file("")); info(L"Compile ubershader"); LRenderShader_use_as_default(GL_VERTEX_SHADER, "shader/ubershader.vert"); LRenderShader_use_as_default(GL_FRAGMENT_SHADER, "shader/ubershader.frag"); ubershader = LRenderShader_create(); shader_program = ubershader->program; _init_render_to_screen(); return render; }
int main(/*int argc, char *argv[]*/){ screen = {1920,1080}; SDL_Init(SDL_INIT_VIDEO); // Select an OpenGL 2.1 profile. //SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 1); SDL_Window *window = SDL_CreateWindow("Voxel Engine", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, screen.x, screen.y, SDL_WINDOW_RESIZABLE | SDL_WINDOW_OPENGL); SDL_GLContext context = SDL_GL_CreateContext(window); GLenum err; glewExperimental = GL_TRUE; if((err=glewInit()) != GLEW_OK){ std::cout << "GLEW was not able to initialize! Error: " << glewGetErrorString(err) << std::endl; return -1; } // Set relative mouse mode, this will grab the cursor. SDL_SetRelativeMouseMode(SDL_TRUE); SDL_GL_SetSwapInterval(0); ui::reshape(window, screen.x, screen.y); print_opengl_info(); if (!init_resources()) return EXIT_FAILURE; glEnable(GL_BLEND); glEnable(GL_DEPTH_TEST); //glDepthFunc(GL_LESS); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); mainLoop(window); free_resources(); SDL_GL_DeleteContext(context); SDL_DestroyWindow(window); SDL_Quit(); return 0; // Calls everything passed to atexit }