Separate X11 and OpenGL and binding calls
This commit is contained in:
parent
a12da132d3
commit
c40ac84075
@ -3,9 +3,11 @@ F_ROOT=$(readlink -f "$0")
|
||||
D_ROOT=$(dirname "${F_ROOT}")/../../.
|
||||
D_COMPILE=${D_ROOT}/compile
|
||||
D_LINK=${D_ROOT}/link
|
||||
D_PACK=${D_ROOT}/pack
|
||||
D_RUN=${D_ROOT}/run
|
||||
F_COMPILE_LIST=${D_COMPILE}/project_files.txt
|
||||
F_LINK_LIST=${D_LINK}/project_files.txt
|
||||
F_COMPILE_LIST=${D_PACK}/cpp_files.txt
|
||||
F_LINK_LIST=${D_LINK}/object_files.txt
|
||||
F_OBJ_LIST=${D_PACK}/obj_files.txt
|
||||
echo "" > ${F_LINK_LIST}
|
||||
|
||||
# Compile.
|
||||
@ -21,12 +23,16 @@ do
|
||||
I_COMPILE=${D_COMPILE}/${F_COMPILE}
|
||||
O_COMPILE=${D_LINK}/${F_COMPILE}.o
|
||||
mkdir -p "${O_COMPILE%/*}"
|
||||
clang++ -I ${D_COMPILE} -c ${I_COMPILE} -o ${O_COMPILE}
|
||||
|
||||
clang++ -I ${D_COMPILE} \
|
||||
-D ROOT_DIRECTORY_MV=\"${D_ROOT}\" \
|
||||
-c ${I_COMPILE} -o ${O_COMPILE}
|
||||
|
||||
echo ${O_COMPILE} >> ${F_LINK_LIST}
|
||||
done
|
||||
|
||||
# Libraries.
|
||||
F_LIBRARY_LIST=${D_COMPILE}/libraries.txt
|
||||
F_LIBRARY_LIST=${D_PACK}/libraries.txt
|
||||
F_LIBRARY_OPTIONS=${D_LINK}/library_options.txt
|
||||
echo "" > ${F_LIBRARY_OPTIONS}
|
||||
LINE=0
|
||||
|
2
compile/code/macros.h
Normal file
2
compile/code/macros.h
Normal file
@ -0,0 +1,2 @@
|
||||
#define STRINGIFY_MF(s) QUOTE_MF(s)
|
||||
#define QUOTE_MF(s) #s
|
@ -1,6 +1,7 @@
|
||||
#include "allocate/factory.h"
|
||||
#include "code/return.h"
|
||||
#include "draw/opengl_service.h"
|
||||
#include <GL/gl.h>
|
||||
|
||||
opengl_service_t::opengl_service_t(
|
||||
opengl_service_t::configuration_t* configuration_p
|
||||
|
@ -1,16 +1,8 @@
|
||||
#ifndef SERVICE_RENDER
|
||||
#define SERVICE_RENDER
|
||||
#ifndef DRAW_OPENGL_SERVICE
|
||||
#define DRAW_OPENGL_SERVICE
|
||||
#include "allocate/factory.h"
|
||||
#include "code/return.h"
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/X.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <string>
|
||||
#include <GL/gl.h>
|
||||
#include <GL/glx.h>
|
||||
#include <GL/glu.h>
|
||||
|
||||
class opengl_service_t {
|
||||
friend class opengl_service_factory_t;
|
||||
public:
|
||||
|
@ -1,9 +1,10 @@
|
||||
#ifndef SERVICE_WINDOW
|
||||
#define SERVICE_WINDOW
|
||||
#ifndef DRAW_WINDOW_SERVICE
|
||||
#define DRAW_WINDOW_SERVICE
|
||||
#include "allocate/factory.h"
|
||||
#include "code/return.h"
|
||||
#include "inform/text_service.h"
|
||||
#include <string>
|
||||
|
||||
class window_service_t {
|
||||
friend class window_service_factory_t;
|
||||
public:
|
||||
|
12
compile/fabricate/face.cpp
Normal file
12
compile/fabricate/face.cpp
Normal file
@ -0,0 +1,12 @@
|
||||
#include "fabricate/face.h"
|
||||
#include "fabricate/vertex.h"
|
||||
|
||||
face_t::face_t(
|
||||
vertex_t vertex_a_p,
|
||||
vertex_t vertex_b_p,
|
||||
vertex_t vertex_c_p
|
||||
) {
|
||||
vertex_a = vertex_a_p;
|
||||
vertex_b = vertex_b_p;
|
||||
vertex_c = vertex_c_p;
|
||||
}
|
15
compile/fabricate/face.h
Normal file
15
compile/fabricate/face.h
Normal file
@ -0,0 +1,15 @@
|
||||
#ifndef FABRICATE_FACE
|
||||
#define FABRICATE_FACE
|
||||
#include "fabricate/vertex.h"
|
||||
class face_t {
|
||||
public:
|
||||
vertex_t vertex_a;
|
||||
vertex_t vertex_b;
|
||||
vertex_t vertex_c;
|
||||
face_t(
|
||||
vertex_t vertex_a_p,
|
||||
vertex_t vertex_b_p,
|
||||
vertex_t vertex_c_p
|
||||
);
|
||||
};
|
||||
#endif
|
0
compile/fabricate/model.cpp
Normal file
0
compile/fabricate/model.cpp
Normal file
13
compile/fabricate/model.h
Normal file
13
compile/fabricate/model.h
Normal file
@ -0,0 +1,13 @@
|
||||
#ifndef FABRICATE_MODEL
|
||||
#define FABRICATE_MODEL
|
||||
#include <vector>
|
||||
class model_t {
|
||||
public:
|
||||
std::vector<unsigned int> vertex_indices_m;
|
||||
std::vector<unsigned int> texture_coordinate_indices_m;
|
||||
std::vector<unsigned int> normal_indices_m;
|
||||
std::vector<vertex_t> vertices_m;
|
||||
std::vector<texture_coordinate_t> texture_coordinates_m;
|
||||
std::vector<vector_t> normals_m;
|
||||
};
|
||||
#endif
|
48
compile/fabricate/model_service.cpp
Normal file
48
compile/fabricate/model_service.cpp
Normal file
@ -0,0 +1,48 @@
|
||||
#include "fabricate/model_service.h"
|
||||
#include "code/return.h"
|
||||
#include <string>
|
||||
|
||||
model_service_t::model_service_t(
|
||||
model_service_t::configuration_t* configuration_p
|
||||
) {
|
||||
configuration_m = configuration_p;
|
||||
}
|
||||
|
||||
return_t<model_service_t::error_t, model_t*> get_model_by_id(
|
||||
model_service_t::model_id_t model_id_p
|
||||
) {
|
||||
model_t* model_l;
|
||||
switch (model_id_p) {
|
||||
case model_service_t::model_id_t::monkey:
|
||||
// model_l = new model with correct data
|
||||
break;
|
||||
default:
|
||||
model_l = nullptr;
|
||||
break;
|
||||
}
|
||||
return_t<model_service_t::error_t, model_t*> return_l;
|
||||
return_l.error_m = model_service_t::error_t::none;
|
||||
return_l.value_m = model_l;
|
||||
return return_l;
|
||||
}
|
||||
|
||||
return_t<model_service_t::error_t, model_service_t*> create(
|
||||
model_service_t::configuration_t* configuration_p
|
||||
) {
|
||||
model_service_t* model_service_l = new model_service_t(
|
||||
configuration_p
|
||||
);
|
||||
return_t<model_service_t::error_t, model_service_t*> return_l;
|
||||
return_l.error_m = model_service_t::error_t::none;
|
||||
return_l.value_m = model_service_l;
|
||||
return return_l;
|
||||
}
|
||||
|
||||
void_t<model_service_t::error_t> dispose(
|
||||
model_service_t* model_service_p
|
||||
) {
|
||||
delete model_service_p;
|
||||
void_t<model_service_t::error_t> void_l;
|
||||
void_l.error_m = model_service_t::error_t::none;
|
||||
return void_l;
|
||||
}
|
37
compile/fabricate/model_service.h
Normal file
37
compile/fabricate/model_service.h
Normal file
@ -0,0 +1,37 @@
|
||||
#ifndef FABRICATE_MODEL_PARSER
|
||||
#define FABRICATE_MODEL_PARSER
|
||||
#include "allocate/factory.h"
|
||||
#include "code/return.h"
|
||||
#include <string>
|
||||
class model_service_t {
|
||||
friend class model_service_factory_t;
|
||||
public:
|
||||
enum error_t {
|
||||
none,
|
||||
unknown
|
||||
};
|
||||
enum model_id_t {
|
||||
monkey
|
||||
};
|
||||
struct configuration_t {
|
||||
std::string obj_files_m;
|
||||
};
|
||||
return_t<error_t, model_t*> get_model_by_id(
|
||||
model_id_t model_id_p
|
||||
);
|
||||
private:
|
||||
model_service_t(
|
||||
configuration_t* configuration_p
|
||||
);
|
||||
configuration_t* configuration_m;
|
||||
};
|
||||
class model_service_factory_t : public factory_t<model_service_t::configuration_t, model_service_t, model_service_t::error_t> {
|
||||
public:
|
||||
return_t<model_service_t::error_t, model_service_t*> create(
|
||||
model_service_t::configuration_t* configuration_p
|
||||
);
|
||||
void_t<model_service_t::error_t> dispose(
|
||||
model_service_t* model_service_p
|
||||
);
|
||||
};
|
||||
#endif
|
9
compile/fabricate/texture_coordinate.cpp
Normal file
9
compile/fabricate/texture_coordinate.cpp
Normal file
@ -0,0 +1,9 @@
|
||||
#include "fabricate/texture_coordinate.h"
|
||||
|
||||
texture_coordinate_t(
|
||||
float u_p,
|
||||
float v_p
|
||||
) {
|
||||
u = u_p;
|
||||
v = v_p;
|
||||
}
|
12
compile/fabricate/texture_coordinate.h
Normal file
12
compile/fabricate/texture_coordinate.h
Normal file
@ -0,0 +1,12 @@
|
||||
#ifndef FABRICATE_TEXTURE_COORDINATE
|
||||
#define FABRICATE_TEXTURE_COORDINATE
|
||||
class texture_coordinate_t {
|
||||
public:
|
||||
float u;
|
||||
float v;
|
||||
texture_coordinate_t(
|
||||
float u_p,
|
||||
float v_p
|
||||
);
|
||||
};
|
||||
#endif
|
11
compile/fabricate/vector.cpp
Normal file
11
compile/fabricate/vector.cpp
Normal file
@ -0,0 +1,11 @@
|
||||
#include "fabricate/vector.h"
|
||||
|
||||
vector_t::vector_t(
|
||||
float x_p,
|
||||
float y_p,
|
||||
float z_p
|
||||
) {
|
||||
x = x_p;
|
||||
y = y_p;
|
||||
z = z_p;
|
||||
}
|
14
compile/fabricate/vector.h
Normal file
14
compile/fabricate/vector.h
Normal file
@ -0,0 +1,14 @@
|
||||
#ifndef FABRICATE_VECTOR
|
||||
#define FABRICATE_VECTOR
|
||||
class vector_t {
|
||||
public:
|
||||
float x;
|
||||
float y;
|
||||
float z;
|
||||
vector_t(
|
||||
float x_p,
|
||||
float y_p,
|
||||
float z_p
|
||||
);
|
||||
};
|
||||
#endif
|
11
compile/fabricate/vertex.cpp
Normal file
11
compile/fabricate/vertex.cpp
Normal file
@ -0,0 +1,11 @@
|
||||
#include "fabricate/vertex.h"
|
||||
|
||||
vertex_t::vertex_t(
|
||||
float x_p,
|
||||
float y_p,
|
||||
float z_p
|
||||
) {
|
||||
x = x_p;
|
||||
y = y_p;
|
||||
z = z_p;
|
||||
}
|
14
compile/fabricate/vertex.h
Normal file
14
compile/fabricate/vertex.h
Normal file
@ -0,0 +1,14 @@
|
||||
#ifndef FABRICATE_VERTEX
|
||||
#define FABRICATE_VERTEX
|
||||
class vertex_t {
|
||||
public:
|
||||
float x;
|
||||
float y;
|
||||
float z;
|
||||
vertex_t(
|
||||
float x_p,
|
||||
float y_p,
|
||||
float z_p
|
||||
);
|
||||
}
|
||||
#endif
|
@ -1,8 +1,55 @@
|
||||
#include "act/controller.h"
|
||||
#include "act/root.h"
|
||||
#include "code/provider.h"
|
||||
#include "code/macros.h"
|
||||
#include <vector>
|
||||
#include <stdio.h>
|
||||
#include <string>
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
// Parse configuration files.
|
||||
std::string obj_list_filepath_l = ROOT_DIRECTORY_MV "/pack/obj_files.txt";
|
||||
FILE* obj_list_file_l = fopen(obj_list_filepath_l.data(), "r");
|
||||
char char_l = fgetc(obj_list_file_l);
|
||||
std::string obj_file_l = "";
|
||||
std::vector<std::string> obj_files_l;
|
||||
while (char_l != EOF) {
|
||||
if (char_l == '\n') {
|
||||
std::string copy_l(obj_file_l);
|
||||
obj_files_l.push_back(copy_l);
|
||||
obj_file_l.clear();
|
||||
} else {
|
||||
obj_file_l += char_l;
|
||||
}
|
||||
char_l = fgetc(obj_list_file_l);
|
||||
}
|
||||
|
||||
// Read OBJ files.
|
||||
for (int i = 0; i < obj_files_l.size(); i++) {
|
||||
obj_file_l = obj_files_l[i];
|
||||
std::string line_l;
|
||||
std::ifstream file_l;
|
||||
file_l.open(obj_file_l);
|
||||
while (getline(file_l, line_l)) {
|
||||
char first_l = line_l[0];
|
||||
char second_l = line_l[1];
|
||||
printf("%c\n", first_l);
|
||||
if (first_l == 'v' && second_l != ' ') {
|
||||
// Create vertex
|
||||
} else if (first_l == 'v' && second_l == 'n') {
|
||||
// Create vertex normal vector
|
||||
} else if (first_l == 'v' && second_l == 't') {
|
||||
// Create texture coordinate
|
||||
} else if (first_l == 'f') {
|
||||
// Create face
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Create text service.
|
||||
text_service_factory_t text_service_factory_l;
|
||||
text_service_t::configuration_t text_service_configuration_l;
|
||||
|
@ -1,15 +1,6 @@
|
||||
#include "allocate/factory.h"
|
||||
#include "code/return.h"
|
||||
#include "target/linux/draw/opengl_x11_service.h"
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/X.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <string>
|
||||
#include <GL/gl.h>
|
||||
#include <GL/glx.h>
|
||||
#include <GL/glu.h>
|
||||
|
||||
opengl_x11_service_t::opengl_x11_service_t(
|
||||
opengl_x11_service_t::configuration_t* configuration_p
|
||||
|
@ -1,16 +1,9 @@
|
||||
#ifndef DRAW_OPENGL_X11_SERVICE
|
||||
#define DRAW_OPENGL_X11_SERVICE
|
||||
#ifndef TARGET_LINUX_DRAW_OPENGL_X11_SERVICE
|
||||
#define TARGET_LINUX_DRAW_OPENGL_X11_SERVICE
|
||||
#include "allocate/factory.h"
|
||||
#include "code/return.h"
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/X.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <string>
|
||||
#include <GL/gl.h>
|
||||
#include <GL/glx.h>
|
||||
#include <GL/glu.h>
|
||||
|
||||
class opengl_x11_service_t {
|
||||
friend class opengl_x11_service_factory_t;
|
||||
public:
|
||||
|
@ -2,16 +2,6 @@
|
||||
#include "draw/window_service.h"
|
||||
#include "inform/text_service.h"
|
||||
#include "target/linux/draw/opengl_x11_service.h"
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/X.h>
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <string>
|
||||
#include <GL/gl.h>
|
||||
#include <GL/glx.h>
|
||||
#include <GL/glu.h>
|
||||
|
||||
window_service_t::window_service_t(
|
||||
window_service_t::configuration_t* configuration_p
|
||||
|
1
pack/obj_files.txt
Normal file
1
pack/obj_files.txt
Normal file
@ -0,0 +1 @@
|
||||
/home/cogentleman/main/jww/design/3d_models/cube.obj
|
Loading…
Reference in New Issue
Block a user