WIP: optimisation: les vertex d'abord, les lignes ensuite. (1èr essai)
This commit is contained in:
parent
01fcc4f69e
commit
fc271cf2ef
|
@ -38,7 +38,11 @@ typedef struct arrow_t {
|
||||||
GLuint z;
|
GLuint z;
|
||||||
};
|
};
|
||||||
|
|
||||||
int write_one_arrow(int offset_vertex,
|
int write_one_arrow_vertex (int offset_vertex,
|
||||||
|
int space_X, int space_Y, int space_Z,
|
||||||
|
int weight, int site, int x, int y, int z);
|
||||||
|
|
||||||
|
int write_one_arrow_lines (int offset_vertex,
|
||||||
int space_X, int space_Y, int space_Z,
|
int space_X, int space_Y, int space_Z,
|
||||||
int weight, int site, int x, int y, int z);
|
int weight, int site, int x, int y, int z);
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,8 @@
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
int write_space_ridges (long offset_vertex, long offset_colors, long offset_lines, long x, long y, long z);
|
int write_space_ridges_vertex (long offset_vertex, long offset_colors, long offset_lines, long x, long y, long z);
|
||||||
|
int write_space_ridges_lines (long offset_vertex, long offset_colors, long offset_lines, long x, long y, long z);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Writes grid lines on space faces
|
* Writes grid lines on space faces
|
||||||
|
@ -43,5 +44,6 @@ int write_space_ridges (long offset_vertex, long offset_colors, long offset_line
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
long write_grids_on_space_faces (long offset_vertex, long offset_colors, long offset_lines, long x, long y, long z, int style);
|
long write_grids_on_space_faces_vertex (long offset_vertex, long offset_colors, long offset_lines, long x, long y, long z, int style);
|
||||||
|
long write_grids_on_space_faces_lines (long offset_vertex, long offset_colors, long offset_lines, long x, long y, long z, int style);
|
||||||
|
|
||||||
|
|
|
@ -110,7 +110,7 @@ static void arrows_write_basis(long offset)
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
int write_one_arrow(int offset_vertex,
|
int write_one_arrow_vertex (int offset_vertex,
|
||||||
int space_X_int, int space_Y_int, int space_Z_int,
|
int space_X_int, int space_Y_int, int space_Z_int,
|
||||||
int weight, int site, int arrow_x, int arrow_y, int arrow_z)
|
int weight, int site, int arrow_x, int arrow_y, int arrow_z)
|
||||||
{
|
{
|
||||||
|
@ -149,11 +149,6 @@ int write_one_arrow(int offset_vertex,
|
||||||
graphics_write_color(0.3f, 0.3f, 0.3f);
|
graphics_write_color(0.3f, 0.3f, 0.3f);
|
||||||
graphics_write_color(0.3f, 0.3f, 0.3f);
|
graphics_write_color(0.3f, 0.3f, 0.3f);
|
||||||
|
|
||||||
/* graphics_write_line (offset_vertex + 0, offset_vertex + 1); */
|
|
||||||
/* graphics_write_line (offset_vertex + 2, offset_vertex + 3); */
|
|
||||||
/* graphics_write_line (offset_vertex + 4, offset_vertex + 5); */
|
|
||||||
|
|
||||||
|
|
||||||
GLfloat nuance = 0.24f;
|
GLfloat nuance = 0.24f;
|
||||||
|
|
||||||
// X - X (EAST - WEST) axis - arrows tips (red - green)
|
// X - X (EAST - WEST) axis - arrows tips (red - green)
|
||||||
|
@ -174,6 +169,17 @@ int write_one_arrow(int offset_vertex,
|
||||||
graphics_write_color(0.0f + nuance * 2, 0.0f + nuance * 2, 1.0f - nuance);
|
graphics_write_color(0.0f + nuance * 2, 0.0f + nuance * 2, 1.0f - nuance);
|
||||||
graphics_write_color(1.0f - nuance / 3, 1.0f - nuance / 3, 0.0f + nuance);
|
graphics_write_color(1.0f - nuance / 3, 1.0f - nuance / 3, 0.0f + nuance);
|
||||||
|
|
||||||
|
return 12;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int write_one_arrow_lines(int offset_vertex,
|
||||||
|
int space_X_int, int space_Y_int, int space_Z_int,
|
||||||
|
int weight, int site, int arrow_x, int arrow_y, int arrow_z)
|
||||||
|
{
|
||||||
|
/* graphics_write_line (offset_vertex + 0, offset_vertex + 1); */
|
||||||
|
/* graphics_write_line (offset_vertex + 2, offset_vertex + 3); */
|
||||||
|
/* graphics_write_line (offset_vertex + 4, offset_vertex + 5); */
|
||||||
|
|
||||||
switch(site){
|
switch(site){
|
||||||
case EAST: case WEST: write_arrow_lines_east_west (offset_vertex, weight, site); break;
|
case EAST: case WEST: write_arrow_lines_east_west (offset_vertex, weight, site); break;
|
||||||
|
|
|
@ -675,7 +675,7 @@ void __attribute__((optimize("no-unroll-loops"))) main_test_graphics (void)
|
||||||
int rand(void);
|
int rand(void);
|
||||||
void srand(unsigned int seed); // printf ("Valeur max : %d\n", RAND_MAX); min + rand() % (max+1 - min);
|
void srand(unsigned int seed); // printf ("Valeur max : %d\n", RAND_MAX); min + rand() % (max+1 - min);
|
||||||
|
|
||||||
int arbitrary = 10;
|
int arbitrary = 1000;
|
||||||
int space_X = 1 + rand() % arbitrary,
|
int space_X = 1 + rand() % arbitrary,
|
||||||
space_Y = 1 + rand() % arbitrary,
|
space_Y = 1 + rand() % arbitrary,
|
||||||
space_Z = 1 + rand() % arbitrary;
|
space_Z = 1 + rand() % arbitrary;
|
||||||
|
@ -699,17 +699,25 @@ void __attribute__((optimize("no-unroll-loops"))) main_test_graphics (void)
|
||||||
|
|
||||||
print_user_choices(arrows, arrows_nb, space_X, space_Y, space_Z, print_arrows_data, show_space_design);
|
print_user_choices(arrows, arrows_nb, space_X, space_Y, space_Z, print_arrows_data, show_space_design);
|
||||||
|
|
||||||
/* DATA ARE NOW ALL SPECIFIED - DRAWING CAN START */
|
/* D A T A A R E N O W A L L S P E C I F I E D */
|
||||||
|
|
||||||
|
/* D R A W I N G C A N S T A R T */
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* V E R T E X F I R S T */
|
||||||
|
|
||||||
int offset_vertex = 0, offset_colors = 0, offset_lines = 0;
|
int offset_vertex = 0, offset_colors = 0, offset_lines = 0;
|
||||||
|
|
||||||
offset_vertex += write_space_ridges (offset_vertex, offset_colors, offset_lines, space_X, space_Y, space_Z);
|
/* S P A C E */
|
||||||
|
|
||||||
|
offset_vertex += write_space_ridges_vertex (offset_vertex, offset_colors, offset_lines, space_X, space_Y, space_Z);
|
||||||
offset_colors = offset_vertex;
|
offset_colors = offset_vertex;
|
||||||
|
|
||||||
offset_vertex += write_grids_on_space_faces (offset_vertex, offset_colors, offset_lines, space_X, space_Y, space_Z, show_space_design);
|
offset_vertex += write_grids_on_space_faces_vertex (offset_vertex, offset_colors, offset_lines, space_X, space_Y, space_Z, show_space_design);
|
||||||
offset_colors = offset_vertex;
|
offset_colors = offset_vertex;
|
||||||
|
|
||||||
/* ARROWS */
|
/* A R R O W S */
|
||||||
|
|
||||||
for (int i = 0; i < arrows_nb; i++) {
|
for (int i = 0; i < arrows_nb; i++) {
|
||||||
load = arrows[i].load;
|
load = arrows[i].load;
|
||||||
|
@ -718,12 +726,38 @@ void __attribute__((optimize("no-unroll-loops"))) main_test_graphics (void)
|
||||||
y = arrows[i].y;
|
y = arrows[i].y;
|
||||||
z = arrows[i].z;
|
z = arrows[i].z;
|
||||||
|
|
||||||
offset_vertex += write_one_arrow(offset_vertex,
|
offset_vertex += write_one_arrow_vertex(offset_vertex,
|
||||||
space_X, space_Y, space_Z,
|
space_X, space_Y, space_Z,
|
||||||
load, site, x, y, z);
|
load, site, x, y, z);
|
||||||
offset_colors = offset_vertex;
|
offset_colors = offset_vertex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* L I N E S S E C O N D */
|
||||||
|
|
||||||
|
offset_vertex = 0; offset_colors = 0; offset_lines = 0;
|
||||||
|
|
||||||
|
/* S P A C E */
|
||||||
|
|
||||||
|
offset_vertex += write_space_ridges_lines (offset_vertex, offset_colors, offset_lines, space_X, space_Y, space_Z);
|
||||||
|
|
||||||
|
offset_vertex += write_grids_on_space_faces_lines (offset_vertex, offset_colors, offset_lines, space_X, space_Y, space_Z, show_space_design);
|
||||||
|
|
||||||
|
/* A R R O W S */
|
||||||
|
|
||||||
|
for (int i = 0; i < arrows_nb; i++) {
|
||||||
|
load = arrows[i].load;
|
||||||
|
site = arrows[i].site;
|
||||||
|
x = arrows[i].x;
|
||||||
|
y = arrows[i].y;
|
||||||
|
z = arrows[i].z;
|
||||||
|
|
||||||
|
offset_vertex += write_one_arrow_lines (offset_vertex, space_X, space_Y, space_Z,
|
||||||
|
load, site, x, y, z);
|
||||||
|
}
|
||||||
|
|
||||||
// ? free (space) TODO
|
// ? free (space) TODO
|
||||||
free(arrows);
|
free(arrows);
|
||||||
arrows = NULL;
|
arrows = NULL;
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
#include "../../include/base.h"
|
#include "../../include/base.h"
|
||||||
#include "../../include/graphics.h"
|
#include "../../include/graphics.h"
|
||||||
|
|
||||||
int write_space_ridges (long offset_vertex, long offset_colors, long offset_lines, long x, long y, long z)
|
int write_space_ridges_vertex (long offset_vertex, long offset_colors, long offset_lines, long x, long y, long z)
|
||||||
{
|
{
|
||||||
float max = fmax(x, y); max = fmax(max, z);
|
float max = fmax(x, y); max = fmax(max, z);
|
||||||
graphics_write_vertex (offset_vertex - x / max, offset_vertex - y / max, - z / max);
|
graphics_write_vertex (offset_vertex - x / max, offset_vertex - y / max, - z / max);
|
||||||
|
@ -49,6 +49,11 @@ int write_space_ridges (long offset_vertex, long offset_colors, long offset_line
|
||||||
graphics_write_color (0.9f, 0.2f, 0.1f);
|
graphics_write_color (0.9f, 0.2f, 0.1f);
|
||||||
graphics_write_color (0.9f, 0.2f, 0.1f);
|
graphics_write_color (0.9f, 0.2f, 0.1f);
|
||||||
|
|
||||||
|
return 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
int write_space_ridges_lines (long offset_vertex, long offset_colors, long offset_lines, long x, long y, long z)
|
||||||
|
{
|
||||||
graphics_write_line ( 0, 1); graphics_write_line ( 7, 4);
|
graphics_write_line ( 0, 1); graphics_write_line ( 7, 4);
|
||||||
graphics_write_line ( 0, 2); graphics_write_line ( 7, 5);
|
graphics_write_line ( 0, 2); graphics_write_line ( 7, 5);
|
||||||
graphics_write_line ( 0, 3); graphics_write_line ( 7, 6);
|
graphics_write_line ( 0, 3); graphics_write_line ( 7, 6);
|
||||||
|
@ -60,7 +65,7 @@ int write_space_ridges (long offset_vertex, long offset_colors, long offset_line
|
||||||
return 8;
|
return 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
long write_grids_on_space_faces (long offset_vertex, long offset_colors, long offset_lines, long x, long y, long z, int style)
|
long write_grids_on_space_faces_vertex (long offset_vertex, long offset_colors, long offset_lines, long x, long y, long z, int style)
|
||||||
{
|
{
|
||||||
float i, max = fmax(x, y); max = fmax(max, z);
|
float i, max = fmax(x, y); max = fmax(max, z);
|
||||||
|
|
||||||
|
@ -77,19 +82,8 @@ long write_grids_on_space_faces (long offset_vertex, long offset_colors, long of
|
||||||
graphics_write_color (0.5f, 0.5f, 0.5f);
|
graphics_write_color (0.5f, 0.5f, 0.5f);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < x - 1; i ++) {
|
|
||||||
|
|
||||||
if (style)
|
|
||||||
graphics_write_line (offset_vertex + i * 4 + 0, offset_vertex + i * 4 + 1);
|
|
||||||
graphics_write_line (offset_vertex + i * 4 + 1, offset_vertex + i * 4 + 2);
|
|
||||||
graphics_write_line (offset_vertex + i * 4 + 2, offset_vertex + i * 4 + 3);
|
|
||||||
if (style)
|
|
||||||
graphics_write_line (offset_vertex + i * 4 + 3, offset_vertex + i * 4 + 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
offset_vertex += (x - 1) * 4;
|
offset_vertex += (x - 1) * 4;
|
||||||
offset_colors += (x - 1) * 4;
|
offset_colors += (x - 1) * 4;
|
||||||
if (style) offset_lines += (x - 1) * 2; else offset_lines += (x - 1) * 4;
|
|
||||||
|
|
||||||
for (i = 1; i < y; i++) { // (y - 2) * 4
|
for (i = 1; i < y; i++) { // (y - 2) * 4
|
||||||
|
|
||||||
|
@ -104,19 +98,8 @@ long write_grids_on_space_faces (long offset_vertex, long offset_colors, long of
|
||||||
graphics_write_color (0.5f, 0.5f, 0.5f);
|
graphics_write_color (0.5f, 0.5f, 0.5f);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < y - 1; i ++) {
|
|
||||||
|
|
||||||
if (style)
|
|
||||||
graphics_write_line (offset_vertex + i * 4 + 0, offset_vertex + i * 4 + 1);
|
|
||||||
if (style)
|
|
||||||
graphics_write_line (offset_vertex + i * 4 + 1, offset_vertex + i * 4 + 2);
|
|
||||||
graphics_write_line (offset_vertex + i * 4 + 2, offset_vertex + i * 4 + 3);
|
|
||||||
graphics_write_line (offset_vertex + i * 4 + 3, offset_vertex + i * 4 + 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
offset_vertex += (y - 1) * 4;
|
offset_vertex += (y - 1) * 4;
|
||||||
offset_colors += (y - 1) * 4;
|
offset_colors += (y - 1) * 4;
|
||||||
if (style) offset_lines += (y - 1) * 2; else offset_lines += (y - 1) * 4;
|
|
||||||
|
|
||||||
for (i = 1; i < z; i++) { // (z - 2) * 4
|
for (i = 1; i < z; i++) { // (z - 2) * 4
|
||||||
|
|
||||||
|
@ -131,6 +114,38 @@ long write_grids_on_space_faces (long offset_vertex, long offset_colors, long of
|
||||||
graphics_write_color (0.5f, 0.5f, 0.5f);
|
graphics_write_color (0.5f, 0.5f, 0.5f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return (x + y + z - 3) * 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
long write_grids_on_space_faces_lines (long offset_vertex, long offset_colors, long offset_lines, long x, long y, long z, int style)
|
||||||
|
{
|
||||||
|
float i, max = fmax(x, y); max = fmax(max, z);
|
||||||
|
|
||||||
|
for (i = 0; i < x - 1; i ++) {
|
||||||
|
|
||||||
|
if (style)
|
||||||
|
graphics_write_line (offset_vertex + i * 4 + 0, offset_vertex + i * 4 + 1);
|
||||||
|
graphics_write_line (offset_vertex + i * 4 + 1, offset_vertex + i * 4 + 2);
|
||||||
|
graphics_write_line (offset_vertex + i * 4 + 2, offset_vertex + i * 4 + 3);
|
||||||
|
if (style)
|
||||||
|
graphics_write_line (offset_vertex + i * 4 + 3, offset_vertex + i * 4 + 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* if (style) offset_lines += (x - 1) * 2; else offset_lines += (x - 1) * 4; */
|
||||||
|
|
||||||
|
for (i = 0; i < y - 1; i ++) {
|
||||||
|
|
||||||
|
if (style)
|
||||||
|
graphics_write_line (offset_vertex + i * 4 + 0, offset_vertex + i * 4 + 1);
|
||||||
|
if (style)
|
||||||
|
graphics_write_line (offset_vertex + i * 4 + 1, offset_vertex + i * 4 + 2);
|
||||||
|
graphics_write_line (offset_vertex + i * 4 + 2, offset_vertex + i * 4 + 3);
|
||||||
|
graphics_write_line (offset_vertex + i * 4 + 3, offset_vertex + i * 4 + 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* if (style) offset_lines += (y - 1) * 2; else offset_lines += (y - 1) * 4; */
|
||||||
|
|
||||||
for (i = 0; i < z - 1; i ++) {
|
for (i = 0; i < z - 1; i ++) {
|
||||||
|
|
||||||
graphics_write_line (offset_vertex + i * 4 + 0, offset_vertex + i * 4 + 1);
|
graphics_write_line (offset_vertex + i * 4 + 0, offset_vertex + i * 4 + 1);
|
||||||
|
@ -141,6 +156,8 @@ long write_grids_on_space_faces (long offset_vertex, long offset_colors, long of
|
||||||
graphics_write_line (offset_vertex + i * 4 + 3, offset_vertex + i * 4 + 0);
|
graphics_write_line (offset_vertex + i * 4 + 3, offset_vertex + i * 4 + 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
printf("write_grids_on_space_faces_lines\n");
|
||||||
|
|
||||||
return (x + y + z - 3) * 4;
|
return (x + y + z - 3) * 4;
|
||||||
/* if (style) offset_lines += 2 * (space_X + space_Y + space_Z - 3); */
|
/* if (style) offset_lines += 2 * (space_X + space_Y + space_Z - 3); */
|
||||||
/* else offset_lines += 4 * (space_X + space_Y + space_Z - 3); */
|
/* else offset_lines += 4 * (space_X + space_Y + space_Z - 3); */
|
||||||
|
|
Loading…
Reference in New Issue