UFO: Alien Invasion
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
r_sphere.h File Reference

Functions to generate and render spheres. More...

Go to the source code of this file.

Data Structures

struct  sphere_s
 

Typedefs

typedef struct sphere_s sphere_t
 

Functions

void R_SphereGenerate (sphere_t *sphere, const int tris, const float radius)
 Initialize the globe chain arrays. More...
 
void R_SphereRender (const sphere_t *sphere, const vec3_t pos, const vec3_t rotate, const float scale, const vec4_t lightPos)
 Draw the sphere. More...
 
void R_SphereInit (void)
 Creates the spheres we need for rendering the 3d globe. More...
 

Variables

sphere_t r_globeEarth
 
sphere_t r_globeMoon
 
sphere_t r_globeEarthAtmosphere
 

Detailed Description

Functions to generate and render spheres.

Definition in file r_sphere.h.

Typedef Documentation

typedef struct sphere_s sphere_t

Function Documentation

void R_SphereGenerate ( sphere_t sphere,
const int  tris,
const float  radius 
)

Initialize the globe chain arrays.

Parameters
[out]sphereThe sphere you want to create
[in]trisThe amount of tris the globe should have - the higher the number the higher the details. tris*tris triangles are obtained.
[in]radiusThe radius of the sphere
See also
R_Draw3DGlobe

< angle from the pole (z-axis)

< angle around the equator, from y-axis

Definition at line 51 of file r_sphere.cpp.

References sphere_s::glslProgram, i, M_PI, Mem_PoolAllocTypeN, sphere_s::normals, sphere_s::num_tris, rhoSpiral(), sphere_s::texes, Vector2Set, VectorNormalize2(), VectorSet, sphere_s::verts, and vid_genericPool.

Referenced by R_SphereInit().

void R_SphereInit ( void  )

Creates the spheres we need for rendering the 3d globe.

Note
The moon sphere has less detail because it's smaller in the scene
The sizes are arbitrary, becasue we use orthographic projection. The real sizes are: lunarRadius = 0.273 * earthRadius, solarRadius = 110.0 * earthRadius
See also
R_Init

Definition at line 119 of file r_sphere.cpp.

References CVAR_ARCHIVE, Cvar_Get(), Cvar_SetValue(), EARTH_RADIUS, cvar_s::integer, MOON_RADIUS, R_SphereGenerate(), and cvar_s::value.

Referenced by R_Init().

void R_SphereRender ( const sphere_t sphere,
const vec3_t  pos,
const vec3_t  rotate,
const float  scale,
const vec4_t  lightPos 
)

Draw the sphere.

Parameters
[in]sphereThe sphere that should be rendered
[in]posThe position (translation) of the matrix
[in]rotateThe rotation of the matrix
[in]scaleThe scale of the matrix
[in]lightPosSet this to nullptr if you don't want to change the light position

Definition at line 247 of file r_sphere.cpp.

References rendererData_t::aliasCount, sphere_s::num_tris, sphere_s::overlay, PITCH, R_BindDefaultArray(), R_CheckError, R_SphereCheckGLSL(), R_SphereShade(), R_SphereShadeGLSL(), refdef, ROLL, viddef_t::rx, viddef_t::ry, VectorNotEmpty, viddef, and YAW.

Referenced by R_Draw3DGlobe().

Variable Documentation

sphere_t r_globeEarth

Definition at line 33 of file r_sphere.cpp.

Referenced by R_Draw3DGlobe().

sphere_t r_globeEarthAtmosphere

Definition at line 35 of file r_sphere.cpp.

Referenced by R_Draw3DGlobe().

sphere_t r_globeMoon

Definition at line 34 of file r_sphere.cpp.

Referenced by R_Draw3DGlobe().