naev 0.11.5
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 );
37void gl_renderTextureInterpolate( const glTexture* ta,
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 );
59void gl_renderStaticSpriteInterpolate( const glTexture* sa, const glTexture *sb,
60 double inter, double bx, double by,
61 int sx, int sy, const glColour *c );
62void gl_renderStaticSpriteInterpolateScale( const glTexture* sa, const glTexture *sb,
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 );
91void gl_renderSDF( const glTexture *texture,
92 double x, double y, double w, double h,
93 const glColour *c, double angle, double outline );
94
95extern gl_vbo *gl_squareVBO;
96extern gl_vbo *gl_circleVBO;
97void gl_beginSolidProgram(mat4 projection, const glColour *c);
98void gl_endSolidProgram (void);
99void gl_beginSmoothProgram(mat4 projection);
100void gl_endSmoothProgram (void);
101
102/* Simple Shaders. */
103void gl_renderShader( double x, double y, double w, double h, double r, const SimpleShader *shd, const glColour *c, int center );
104void gl_renderShaderH( const SimpleShader *shd, const mat4 *H, const glColour *c, int center );
105
106/* Circles. */
107void gl_renderCircle( double x, double y,
108 double r, const glColour *c, int filled );
109void gl_renderCircleH( const mat4 *H, const glColour *c, int filled );
110
111/* Lines. */
112void gl_renderLine( double x1, double y1,
113 double x2, double y2, const glColour *c );
114
115/* Rectangles. */
116void gl_renderRect( double x, double y, double w, double h, const glColour *c );
117void gl_renderRectEmpty( double x, double y, double w, double h, const glColour *c );
118void gl_renderRectH( const mat4 *H, const glColour *c, int filled );
119
120/* Cross. */
121void gl_renderCross( double x, double y, double r, const glColour *c );
122
123/* Triangle. */
124void gl_renderTriangleEmpty( double x, double y, double a, double s, double length, const glColour *c );
125
126/* Clipping. */
127void gl_clipRect( int x, int y, int w, int h );
128void gl_unclipRect (void);
void gl_exitRender(void)
Cleans up the OpenGL rendering routines.
void gl_gameToScreenCoords(double *nx, double *ny, double bx, double by)
Converts in-game coordinates to screen coordinates.
int gl_initRender(void)
Initializes the OpenGL rendering routines.
mat4 gl_gameToScreenMatrix(mat4 lhs)
Return a transformation which converts in-game coordinates to screen coordinates.
static const double c[]
Definition rng.c:264
Abstraction for rendering sprite sheets.
Definition opengl_tex.h:36
Definition mat4.h:10