cpp_launchpad/compile/draw/opengl_service.cpp

82 lines
2.0 KiB
C++

#include "allocate/factory.h"
#include "code/return.h"
#include "draw/opengl_service.h"
opengl_service_t::opengl_service_t(
opengl_service_t::configuration_t* configuration_p
) {
configuration_m = configuration_p;
}
void_t<opengl_service_t::error_t> opengl_service_t::draw_quad(
) {
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();
void_t<opengl_service_t::error_t> void_l;
void_l.error_m = opengl_service_t::error_t::none;
return void_l;
}
void_t<opengl_service_t::error_t> opengl_service_t::enable_depth_test(
) {
glEnable(
GL_DEPTH_TEST
);
void_t<opengl_service_t::error_t> void_l;
void_l.error_m = opengl_service_t::error_t::none;
return void_l;
}
void_t<opengl_service_t::error_t> opengl_service_t::resize_viewport(
int x,
int y,
int width,
int height
) {
void_t<opengl_service_t::error_t> void_l;
void_l.error_m = opengl_service_t::error_t::none;
glViewport(
0,
0,
width,
height
);
return void_l;
}
return_t<opengl_service_t::error_t, opengl_service_t*> opengl_service_factory_t::create(
opengl_service_t::configuration_t* configuration_p
) {
opengl_service_t* opengl_service_l = new opengl_service_t(
configuration_p
);
return_t<opengl_service_t::error_t, opengl_service_t*> return_l;
return_l.error_m = opengl_service_t::error_t::none;
return_l.value_m = opengl_service_l;
return return_l;
}
void_t<opengl_service_t::error_t> opengl_service_factory_t::dispose(
opengl_service_t* opengl_service_p
) {
delete opengl_service_p;
void_t<opengl_service_t::error_t> void_l;
void_l.error_m = opengl_service_t::error_t::none;
return void_l;
}