naev 0.10.4
opengl_render.h
1/*
2 * See Licensing and Copyright notice in naev.h
3 */
4#pragma once
5
6#include "opengl.h"
7#include "opengl_tex.h"
8#include "opengl_vbo.h"
9#include "shaders.gen.h"
10#include "mat4.h"
11
12/*
13 * Init/cleanup.
14 */
15int gl_initRender (void);
16void gl_exitRender (void);
17
18/*
19 * Coordinate translation.
20 */
21void gl_gameToScreenCoords( double *nx, double *ny, double bx, double by );
22__attribute__((const)) mat4 gl_gameToScreenMatrix( mat4 lhs );
23void gl_screenToGameCoords( double *nx, double *ny, int bx, int by );
24
25/*
26 * Rendering.
27 */
28/* blits texture */
29void gl_renderTextureRaw( GLuint texture, uint8_t flags,
30 double x, double y, double w, double h,
31 double tx, double ty, double tw, double th,
32 const glColour *c, double angle );
33void gl_renderTexture( const glTexture* texture,
34 double x, double y, double w, double h,
35 double tx, double ty, double tw, double th,
36 const glColour *c, double angle );
38 const glTexture* tb, double inter,
39 double x, double y, double w, double h,
40 double tx, double ty, double tw, double th, const glColour *c );
41/* blits a sprite, relative pos */
42void gl_renderSprite( const glTexture* sprite,
43 double bx, double by,
44 int sx, int sy, const glColour *c );
45void gl_renderSpriteScale( const glTexture* sprite, double bx, double by,
46 double scalew, double scaleh,
47 int sx, int sy, const glColour* c );
48void gl_renderSpriteRotate( const glTexture* sprite,
49 double bx, double by, double angle,
50 int sx, int sy, const glColour *c );
51void gl_renderSpriteScaleRotate( const glTexture* sprite,
52 double bx, double by,
53 double scalew, double scaleh, double angle,
54 int sx, int sy, const glColour *c );
55/* Blits a sprite interpolating between textures, relative pos. */
56void gl_renderSpriteInterpolate( const glTexture* sa, const glTexture *sb,
57 double inter, double bx, double by,
58 int sx, int sy, const glColour *c );
60 double inter, double bx, double by,
61 int sx, int sy, const glColour *c );
63 double inter, double bx, double by,
64 double scalew, double scaleh,
65 int sx, int sy, const glColour *c );
66/* Blits a sprite interpolating between textures and scaling, relative pos. */
67void gl_renderSpriteInterpolateScale( const glTexture* sa, const glTexture *sb,
68 double inter, double bx, double by,
69 double scalew, double scaleh,
70 int sx, int sy, const glColour *c );
71/* blits a sprite, absolute pos */
72void gl_renderStaticSprite( const glTexture* sprite,
73 double bx, double by,
74 int sx, int sy, const glColour* c );
75/* blits a scaled sprite, absolute pos */
76void gl_renderScaleSprite( const glTexture* sprite,
77 double bx, double by,
78 int sx, int sy,
79 double bw, double bh, const glColour* c );
80/* blits a texture scaled, absolute pos */
81void gl_renderScale( const glTexture* texture,
82 double bx, double by,
83 double bw, double bh, const glColour* c );
84/* blits a texture scaled to a rectangle, but conserve aspect ratio, absolute pos */
85void gl_renderScaleAspect( const glTexture* texture,
86 double bx, double by,
87 double bw, double bh, const glColour* c );
88/* blits the entire image, absolute pos */
89void gl_renderStatic( const glTexture* texture,
90 double bx, double by, const glColour *c );
91
92extern gl_vbo *gl_squareVBO;
93extern gl_vbo *gl_circleVBO;
94void gl_beginSolidProgram(mat4 projection, const glColour *c);
95void gl_endSolidProgram (void);
96void gl_beginSmoothProgram(mat4 projection);
97void gl_endSmoothProgram (void);
98
99/* Simple Shaders. */
100void gl_renderShader( double x, double y, double w, double h, double r, const SimpleShader *shd, const glColour *c, int center );
101void gl_renderShaderH( const SimpleShader *shd, const mat4 *H, const glColour *c, int center );
102
103/* Circles. */
104void gl_renderCircle( double x, double y,
105 double r, const glColour *c, int filled );
106void gl_renderCircleH( const mat4 *H, const glColour *c, int filled );
107
108/* Lines. */
109void gl_renderLine( double x1, double y1,
110 double x2, double y2, const glColour *c );
111
112/* Rectangles. */
113void gl_renderRect( double x, double y, double w, double h, const glColour *c );
114void gl_renderRectEmpty( double x, double y, double w, double h, const glColour *c );
115void gl_renderRectH( const mat4 *H, const glColour *c, int filled );
116
117/* Cross. */
118void gl_renderCross( double x, double y, double r, const glColour *c );
119
120/* Triangle. */
121void gl_renderTriangleEmpty( double x, double y, double a, double s, double length, const glColour *c );
122
123/* Clipping. */
124void gl_clipRect( int x, int y, int w, int h );
125void gl_unclipRect (void);
void gl_exitRender(void)
Cleans up the OpenGL rendering routines.
void gl_renderShader(double x, double y, double w, double h, double r, const SimpleShader *shd, const glColour *c, int center)
Renders a simple shader.
void gl_renderShaderH(const SimpleShader *shd, const mat4 *H, const glColour *c, int center)
Renders a simple shader with a transformation.
void gl_renderRect(double x, double y, double w, double h, const glColour *c)
Renders a rectangle.
Definition: opengl_render.c:90
void gl_renderLine(double x1, double y1, double x2, double y2, const glColour *c)
Draws a line.
void gl_gameToScreenCoords(double *nx, double *ny, double bx, double by)
Converts in-game coordinates to screen coordinates.
void gl_renderSpriteInterpolate(const glTexture *sa, const glTexture *sb, double inter, double bx, double by, int sx, int sy, const glColour *c)
Blits a sprite interpolating, position is relative to the player.
int gl_initRender(void)
Initializes the OpenGL rendering routines.
void gl_renderCircleH(const mat4 *H, const glColour *c, int filled)
Draws a circle.
void gl_renderTexture(const glTexture *texture, double x, double y, double w, double h, double tx, double ty, double tw, double th, const glColour *c, double angle)
Texture blitting backend.
void gl_renderTriangleEmpty(double x, double y, double a, double s, double length, const glColour *c)
Renders a triangle at a given position.
void gl_unclipRect(void)
Clears the 2d clipping planes.
void gl_renderSpriteScale(const glTexture *sprite, double bx, double by, double scalew, double scaleh, int sx, int sy, const glColour *c)
Blits a sprite, position is relative to the player.
void gl_renderSpriteScaleRotate(const glTexture *sprite, double bx, double by, double scalew, double scaleh, double angle, int sx, int sy, const glColour *c)
Blits a sprite, position is relative to the player with scaling and rotation.
void gl_renderStatic(const glTexture *texture, double bx, double by, const glColour *c)
Blits a texture to a position.
void gl_renderScale(const glTexture *texture, double bx, double by, double bw, double bh, const glColour *c)
Blits a texture scaling it.
void gl_renderScaleSprite(const glTexture *sprite, double bx, double by, int sx, int sy, double bw, double bh, const glColour *c)
Blits a scaled sprite, position is in absolute screen coordinates.
void gl_renderTextureInterpolate(const glTexture *ta, const glTexture *tb, double inter, double x, double y, double w, double h, double tx, double ty, double tw, double th, const glColour *c)
Texture blitting backend for interpolated texture.
void gl_renderScaleAspect(const glTexture *texture, double bx, double by, double bw, double bh, const glColour *c)
Blits a texture scaling it to fit a rectangle, but conserves aspect ratio.
void gl_renderTextureRaw(GLuint texture, uint8_t flags, double x, double y, double w, double h, double tx, double ty, double tw, double th, const glColour *c, double angle)
Texture blitting backend.
void gl_renderSprite(const glTexture *sprite, double bx, double by, int sx, int sy, const glColour *c)
Blits a sprite, position is relative to the player.
void gl_renderStaticSpriteInterpolate(const glTexture *sa, const glTexture *sb, double inter, double bx, double by, int sx, int sy, const glColour *c)
Blits a sprite interpolating, position is relative to the player.
void gl_screenToGameCoords(double *nx, double *ny, int bx, int by)
Converts screen coordinates to in-game coordinates.
void gl_renderStaticSprite(const glTexture *sprite, double bx, double by, int sx, int sy, const glColour *c)
Blits a sprite, position is in absolute screen coordinates.
void gl_renderRectEmpty(double x, double y, double w, double h, const glColour *c)
Renders a rectangle.
void gl_renderCross(double x, double y, double r, const glColour *c)
Renders a cross at a given position.
void gl_renderSpriteRotate(const glTexture *sprite, double bx, double by, double angle, int sx, int sy, const glColour *c)
Blits a sprite, position is relative to the player with rotation.
void gl_renderStaticSpriteInterpolateScale(const glTexture *sa, const glTexture *sb, double inter, double bx, double by, double scalew, double scaleh, int sx, int sy, const glColour *c)
Blits a sprite interpolating, position is relative to the player.
void gl_renderSpriteInterpolateScale(const glTexture *sa, const glTexture *sb, double inter, double bx, double by, double scalew, double scaleh, int sx, int sy, const glColour *c)
Blits a sprite interpolating, position is relative to the player.
void gl_renderRectH(const mat4 *H, const glColour *c, int filled)
Renders a rectangle.
mat4 gl_gameToScreenMatrix(mat4 lhs)
Return a transformation which converts in-game coordinates to screen coordinates.
void gl_clipRect(int x, int y, int w, int h)
Sets up 2d clipping planes around a rectangle.
void gl_renderCircle(double cx, double cy, double r, const glColour *c, int filled)
Draws a circle.
static const double c[]
Definition: rng.c:264
Abstraction for rendering sprite sheets.
Definition: opengl_tex.h:34
Definition: mat4.h:10