Example #1
0
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;
}
Example #2
0
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
}