107 lines
3.3 KiB
C
107 lines
3.3 KiB
C
/*
|
|
Raydium - CQFD Corp.
|
|
http://raydium.org/
|
|
License: GPL - GNU General Public License, see "gpl.txt" file.
|
|
*/
|
|
|
|
#ifndef DONT_INCLUDE_HEADERS
|
|
#include "index.h"
|
|
#else
|
|
#include "headers/vertex.h"
|
|
#endif
|
|
|
|
void raydium_vertex_add(GLfloat x, GLfloat y, GLfloat z/*, GLfloat nx, GLfloat ny, GLfloat nz*/)
|
|
{
|
|
|
|
raydium_vertex_x[raydium_vertex_index]=x;
|
|
raydium_vertex_y[raydium_vertex_index]=y;
|
|
raydium_vertex_z[raydium_vertex_index]=z;
|
|
raydium_vertex_texture[raydium_vertex_index]=raydium_texture_current_main;
|
|
raydium_vertex_texture_multi[raydium_vertex_index]=raydium_texture_current_multi;
|
|
raydium_vertex_texture_env[raydium_vertex_index]=raydium_texture_current_env;
|
|
if(raydium_texture_current_multi)
|
|
{
|
|
if(raydium_texture_current_multi_u==-99999 &&
|
|
raydium_texture_current_multi_v==-99999 )
|
|
{
|
|
raydium_vertex_texture_multi_u[raydium_vertex_index]=raydium_internal_vertex_next_u*RAYDIUM_RENDER_MULTITEX_AUTO_UV_FACT;
|
|
raydium_vertex_texture_multi_v[raydium_vertex_index]=raydium_internal_vertex_next_v*RAYDIUM_RENDER_MULTITEX_AUTO_UV_FACT;
|
|
}
|
|
else
|
|
{
|
|
raydium_vertex_texture_multi_u[raydium_vertex_index]=raydium_texture_current_multi_u;
|
|
raydium_vertex_texture_multi_v[raydium_vertex_index]=raydium_texture_current_multi_v;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
raydium_vertex_texture_multi_u[raydium_vertex_index]=0;
|
|
raydium_vertex_texture_multi_v[raydium_vertex_index]=0;
|
|
}
|
|
|
|
|
|
if(raydium_internal_vertex_next_extras)
|
|
{
|
|
raydium_vertex_texture_u[raydium_vertex_index]=raydium_internal_vertex_next_u;
|
|
raydium_vertex_texture_v[raydium_vertex_index]=raydium_internal_vertex_next_v;
|
|
}
|
|
else
|
|
{
|
|
if(raydium_vertex_offset_triangle==0)
|
|
{
|
|
raydium_vertex_texture_u[raydium_vertex_index]=0.0;
|
|
raydium_vertex_texture_v[raydium_vertex_index]=0.0;
|
|
}
|
|
|
|
if(raydium_vertex_offset_triangle==1)
|
|
{
|
|
raydium_vertex_texture_u[raydium_vertex_index]=1.0;
|
|
raydium_vertex_texture_v[raydium_vertex_index]=0.0;
|
|
}
|
|
|
|
if(raydium_vertex_offset_triangle==2)
|
|
{
|
|
raydium_vertex_texture_u[raydium_vertex_index]=1.0;
|
|
raydium_vertex_texture_v[raydium_vertex_index]=1.0;
|
|
}
|
|
}
|
|
|
|
|
|
raydium_vertex_normal_visu_x[raydium_vertex_index]=raydium_internal_vertex_next_nx;
|
|
raydium_vertex_normal_visu_y[raydium_vertex_index]=raydium_internal_vertex_next_ny;
|
|
raydium_vertex_normal_visu_z[raydium_vertex_index]=raydium_internal_vertex_next_nz;
|
|
|
|
raydium_vertex_index++;
|
|
|
|
if(++raydium_vertex_offset_triangle>=3)
|
|
{
|
|
if(raydium_internal_vertex_next_extras<2) raydium_normal_generate_lastest_triangle(1);
|
|
else raydium_normal_generate_lastest_triangle(0);
|
|
raydium_vertex_offset_triangle=0;
|
|
}
|
|
|
|
raydium_internal_vertex_next_extras=0;
|
|
if(raydium_vertex_index>=RAYDIUM_MAX_VERTICES) {raydium_log("out of vertex table #%i!",raydium_texture_current_main); exit(29); }/* !!! TO CHANGE */
|
|
}
|
|
|
|
|
|
void raydium_vertex_uv_add(GLfloat x, GLfloat y, GLfloat z,GLfloat u, GLfloat v)
|
|
{
|
|
raydium_internal_vertex_next_extras=1;
|
|
raydium_internal_vertex_next_u=u;
|
|
raydium_internal_vertex_next_v=v;
|
|
raydium_vertex_add(x,y,z);
|
|
}
|
|
|
|
void raydium_vertex_uv_normals_add(GLfloat x, GLfloat y, GLfloat z, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat u, GLfloat v)
|
|
{
|
|
raydium_internal_vertex_next_extras=2;
|
|
raydium_internal_vertex_next_u=u;
|
|
raydium_internal_vertex_next_v=v;
|
|
|
|
raydium_internal_vertex_next_nx=nx;
|
|
raydium_internal_vertex_next_ny=ny;
|
|
raydium_internal_vertex_next_nz=nz;
|
|
raydium_vertex_add(x,y,z);
|
|
}
|