FS2_Open
Open source remastering of the Freespace 2 engine
|
#include "camera/camera.h"
#include "graphics/2d.h"
#include "graphics/grbatch.h"
#include "graphics/tmapper.h"
#include "math/vecmat.h"
Go to the source code of this file.
Classes | |
struct | flash_beam |
class | flash_ball |
Macros | |
#define | PF_PROJECTED 1 |
#define | PF_OVERFLOW 2 |
#define | PF_TEMP_POINT 4 |
#define | CC_OFF_LEFT 1 |
#define | CC_OFF_RIGHT 2 |
#define | CC_OFF_BOT 4 |
#define | CC_OFF_TOP 8 |
#define | CC_OFF_USER 16 |
#define | CC_BEHIND 0x80 |
#define | CC_OFF (CC_OFF_LEFT | CC_OFF_RIGHT | CC_OFF_BOT | CC_OFF_TOP | CC_OFF_USER | CC_BEHIND) |
#define | g3_start_frame(zbuffer_flag) g3_start_frame_func(zbuffer_flag, __FILE__, __LINE__ ) |
#define | g3_end_frame() g3_end_frame_func( __FILE__, __LINE__ ) |
Variables | |
matrix | View_matrix |
vec3d | View_position |
matrix | Light_matrix |
vec3d | Light_base |
matrix | Eye_matrix |
vec3d | Eye_position |
float | Eye_fov |
vec3d | Object_position |
matrix | Object_matrix |
float | Proj_fov |
#define CC_OFF (CC_OFF_LEFT | CC_OFF_RIGHT | CC_OFF_BOT | CC_OFF_TOP | CC_OFF_USER | CC_BEHIND) |
#define g3_end_frame | ( | ) | g3_end_frame_func( __FILE__, __LINE__ ) |
#define g3_start_frame | ( | zbuffer_flag | ) | g3_start_frame_func(zbuffer_flag, __FILE__, __LINE__ ) |
Calculate the depth of a point - returns the z coord of the rotated point
Definition at line 278 of file 3dmath.cpp.
Returns codes_and & codes_or of a list of points numbers
Returns true if a plane is facing the viewer.
Takes the unrotated surface normal of the plane, and a point on it. The normal need not be normalized
Definition at line 155 of file 3ddraw.cpp.
Codes a vector.
Codes a vector. Returns the codes of a point.
Definition at line 21 of file 3dmath.cpp.
Code a point. fills in the p3_codes field of the point, and returns the codes
Definition at line 54 of file 3dmath.cpp.
void g3_done_instance | ( | bool | use_api | ) |
Pops the old context
Definition at line 341 of file 3dsetup.cpp.
Draw a 2d bitmap on a poly
Definition at line 1728 of file 3ddraw.cpp.
int g3_draw_2d_poly_bitmap_list | ( | bitmap_2d_list * | b_list, |
int | n_bm, | ||
uint | additional_tmap_flags | ||
) |
Definition at line 1794 of file 3ddraw.cpp.
int g3_draw_2d_poly_bitmap_rect_list | ( | bitmap_rect_list * | b_list, |
int | n_bm, | ||
uint | additional_tmap_flags | ||
) |
Definition at line 1885 of file 3ddraw.cpp.
Draw a 2D rectangle
Definition at line 1651 of file 3ddraw.cpp.
void g3_draw_2d_shield_icon | ( | const coord2d | coords[6], |
const int | r, | ||
const int | g, | ||
const int | b, | ||
const int | a | ||
) |
Draw a 2D shield icon w/ 6 points
Definition at line 1551 of file 3ddraw.cpp.
Draws a bitmap with the specified 3d width & height
Set TMAP_FLAG_TEXTURED in the tmap_flags to texture map it with current texture.
If bitmap is not square, rad will be the 3d size of the smallest dimension. orient flips the bitmap in some way. Pass 0 for normal or else pass a random nuber between 0 and 7, inclusive.
Definition at line 649 of file 3ddraw.cpp.
void g3_draw_horizon_line | ( | ) |
Draws a line representing the horizon
Definition at line 1168 of file 3ddraw.cpp.
Draw a line in HTL mode without having to go through the rotate/project stuff
Definition at line 1975 of file 3ddraw.cpp.
Draw a sphere mode without having to go through the rotate/project stuff
Definition at line 1984 of file 3ddraw.cpp.
float g3_draw_laser | ( | const vec3d * | headp, |
float | head_width, | ||
const vec3d * | tailp, | ||
float | tail_width, | ||
uint | tmap_flags = TMAP_FLAG_TEXTURED , |
||
float | max_len = 0.0f |
||
) |
Draw a laser shaped 3d looking thing.
If max_len is > 1.0, then this caps the length to be no longer than max_len pixels
Definition at line 116 of file 3dlaser.cpp.
float g3_draw_laser_rgb | ( | const vec3d * | headp, |
float | head_width, | ||
const vec3d * | tailp, | ||
float | tail_width, | ||
int | r, | ||
int | g, | ||
int | b, | ||
uint | tmap_flags = TMAP_FLAG_TEXTURED|TMAP_FLAG_RGB , |
||
float | max_len = 0.0f |
||
) |
Draw a laser shaped 3d looking thing using vertex coloring (useful for things like colored laser glows)
If max_len is > 1.0, then this caps the length to be no longer than max_len pixels
Definition at line 267 of file 3dlaser.cpp.
Draws a line.
p0 | First point |
p1 | Second point |
Draws a line. takes two points. returns true if drew
Definition at line 112 of file 3ddraw.cpp.
int g3_draw_perspective_bitmap | ( | const angles * | a, |
float | scale_x, | ||
float | scale_y, | ||
int | div_x, | ||
int | div_y, | ||
uint | tmap_flags | ||
) |
Draw a perspective bitmap based on angles and radius
Definition at line 1434 of file 3ddraw.cpp.
Draw a polygon.
Set TMAP_FLAG_TEXTURED in the tmap_flags to texture map it with current texture.
Definition at line 207 of file 3ddraw.cpp.
Draw a polygon.
Same as g3_draw_poly, but it bashes sw to a constant value for all vertexes. Needs to be done after clipping to get them all.
Set TMAP_FLAG_TEXTURED in the tmap_flags to texture map it with current texture.
Definition at line 381 of file 3ddraw.cpp.
int g3_draw_poly_if_facing | ( | int | nv, |
vertex ** | pointlist, | ||
uint | tmap_flags, | ||
const vec3d * | norm, | ||
const vec3d * | pnt | ||
) |
Like g3_draw_poly(), but checks to see if facing.
If surface normal is NULL, this routine must compute it, which will be slow. It is better to pre-compute the normal, and pass it to this function. When the normal is passed, this function works like g3_check_normal_facing() plus g3_draw_poly().
Set TMAP_FLAG_TEXTURED in the tmap_flags to texture map it with current texture.
Definition at line 194 of file 3ddraw.cpp.
int g3_draw_polygon | ( | const vec3d * | pos, |
const matrix * | ori, | ||
float | width, | ||
float | height, | ||
int | tmap_flags = TMAP_FLAG_TEXTURED |
||
) |
Definition at line 310 of file 3ddraw.cpp.
int g3_draw_polygon | ( | const vec3d * | pos, |
const vec3d * | norm, | ||
float | width, | ||
float | height, | ||
int | tmap_flags = TMAP_FLAG_TEXTURED |
||
) |
Definition at line 369 of file 3ddraw.cpp.
int g3_draw_rod | ( | const vec3d * | p0, |
float | width1, | ||
const vec3d * | p1, | ||
float | width2, | ||
vertex * | verts, | ||
uint | tmap_flags | ||
) |
Draws a polygon always facing the viewer. Compute the corners of a rod. fills in vertbuf. Verts has any needs uv's or l's or can be NULL if none needed.
Definition at line 1262 of file 3ddraw.cpp.
int g3_draw_rotated_bitmap | ( | vertex * | pnt, |
float | angle, | ||
float | radius, | ||
uint | tmap_flags, | ||
float | depth = 0.0f |
||
) |
Draw a bitmap that is always facing, but rotates.
If bitmap is not square, rad will be the 3d size of the smallest dimension.
Definition at line 844 of file 3ddraw.cpp.
Draw a sortof sphere - i.e., the 2d radius is proportional to the 3d radius, but not to the distance from the eye. Uses the current 2d color.
Definition at line 475 of file 3ddraw.cpp.
Same as g3_draw_sphere, but you pass a vector and this rotates and projects it and then call g3_draw_sphere.
Definition at line 498 of file 3ddraw.cpp.
This doesn't do anything, but is here for completeness
Definition at line 126 of file 3dsetup.cpp.
int g3_get_bitmap_dims | ( | int | bitmap, |
vertex * | pos, | ||
float | radius, | ||
int * | x, | ||
int * | y, | ||
int * | w, | ||
int * | h, | ||
int * | size | ||
) |
Get bitmap dims onscreen as if g3_draw_bitmap() had been called
Definition at line 740 of file 3ddraw.cpp.
Get current field of view. Fills in angle for x & y
Returns the normalized, unscaled view vectors
Get zoom.
For a given window size, return the zoom which will achieve the given FOV along the given axis.
int g3_in_frame | ( | ) |
From a 2d point, compute the vector through that point
Definition at line 231 of file 3dmath.cpp.
From a 2d point, compute the vector through that point.
This can be called outside of a g3_start_frame/g3_end_frame pair as long g3_start_frame was previously called.
Definition at line 254 of file 3dmath.cpp.
Projects a vector
Definition at line 184 of file 3dmath.cpp.
Use this for stars, etc
Definition at line 156 of file 3dmath.cpp.
Rotates a point.
Rotates a point. returns codes. does not check if already rotated
Definition at line 171 of file 3dmath.cpp.
Rotates a point. returns codes. does not check if already rotated
Definition at line 97 of file 3dmath.cpp.
Same as above, only ignores the current instancing
Definition at line 228 of file 3dsetup.cpp.
Set view from camera
Definition at line 137 of file 3dsetup.cpp.
Set view from x,y,z & p,b,h, zoom. Must call one of g3_set_view_*()
Definition at line 182 of file 3dsetup.cpp.
Set view from x,y,z, viewer matrix, and zoom. Must call one of g3_set_view_*()
Definition at line 152 of file 3dsetup.cpp.
Use the g3_start_frame macro instead of calling this directly.
Start the frame Pass true for zbuffer_flag to turn on zbuffering
Definition at line 75 of file 3dsetup.cpp.
Instance at specified point with specified orientation
Instance at specified point with specified orientation
If angles==NULL, don't modify matrix. This will be like doing an offset
Definition at line 317 of file 3dsetup.cpp.
Instance at specified point with specified orientation
nstance at specified point with specified orientation
if matrix==NULL, don't modify matrix. This will be like doing an offset if pos==NULL, no position change
Definition at line 249 of file 3dsetup.cpp.
Enables clipping with an arbritary plane.
This will be on until g3_stop_clip_plane is called or until next frame. The points passed should be relative to the instance. Probably that means world coordinates.
This works like any other clip plane... if this is enabled and you rotate a point, the CC_OFF_USER bit will be set in the clipping codes. It is completely handled by most g3_draw primitives, except maybe lines.
As far as performance, when enabled, it will slow down each point rotation (or g3_code_vertex call) by a vec3d subtraction and dot product. It won't slow anything down for polys that are completely clipped on or off by the plane, and will slow each clipped polygon by not much more than any other clipping we do.
Definition at line 381 of file 3dsetup.cpp.
void g3_stop_user_clip_plane | ( | ) |
Stops arbritary plane clipping
Definition at line 408 of file 3dsetup.cpp.
Definition at line 84 of file 3dmath.cpp.
float Eye_fov |
Definition at line 28 of file 3dsetup.cpp.
matrix Eye_matrix |
Definition at line 26 of file 3dsetup.cpp.
vec3d Eye_position |
Definition at line 27 of file 3dsetup.cpp.
vec3d Light_base |
Definition at line 24 of file 3dsetup.cpp.
matrix Light_matrix |
Definition at line 23 of file 3dsetup.cpp.
matrix Object_matrix |
Definition at line 43 of file 3dsetup.cpp.
vec3d Object_position |
Definition at line 42 of file 3dsetup.cpp.
float Proj_fov |
Definition at line 31 of file 3dsetup.cpp.
matrix View_matrix |
Definition at line 19 of file 3dsetup.cpp.
vec3d View_position |
Definition at line 20 of file 3dsetup.cpp.