14 #define WIND_RESISTANCE 0.00005f 15 #define MAX_PARTICLES 2000 79 float deltaMilliseconds = deltaTime * 1000;
99 curr->
y += curr->
yvel * deltaMilliseconds;
100 curr->
x += curr->
xvel * deltaMilliseconds;
107 if (curr->
yvel > 0.0) {
116 float normx = curr->
xvel / speed;
117 float normy = curr->
yvel / speed;
126 if (curr->
color[3] <= deltaMilliseconds * 0.1275f) {
132 curr->
color[3] -= deltaMilliseconds * 0.1275f;
137 curr->
size -= deltaMilliseconds * 0.010f;
151 num_active_particles = (int) (slot -
particles);
189 for (i = 0; i < 200; i++) {
197 float speed =
randomFloat(0.00, powf(0.17, exponent));
198 speed = powf(speed, 1.0
f / exponent);
206 p->
x = emitter->
x + emitter->
xvel;
207 p->
y = emitter->
y + emitter->
yvel;
237 p->
y = emitter->
y + emitter->
size / 2.0f;
245 p->
color[3] = (0.7f) * 255;
272 switch (rand() % 4) {
324 Uint32 Rmask, Gmask, Bmask, Amask;
330 if (bmp_surface ==
NULL) {
338 bmp_surface_rgba8888 =
340 Gmask, Bmask, Amask);
367 int drawableW, drawableH;
437 glTexEnvi(GL_POINT_SPRITE_OES, GL_COORD_REPLACE_OES, 1);
GLAPI void GLAPIENTRY glViewport(GLint x, GLint y, GLsizei width, GLsizei height)
#define SDL_GL_ExtensionSupported
double updateDeltaTime(void)
EGLSurface EGLnsecsANDROID time
int nextPowerOfTwo(int x)
#define SDL_GL_CreateContext
#define SDL_LoadBMP(file)
GLint GLint GLint GLint GLint x
void fatalError(const char *string)
GLAPI void GLAPIENTRY glDisable(GLenum cap)
GLAPI void GLAPIENTRY glBlendFunc(GLenum sfactor, GLenum dfactor)
GLAPI void GLAPIENTRY glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *ptr)
A collection of pixels used in software blitting.
static screen_context_t context
GLAPI void GLAPIENTRY glDeleteTextures(GLsizei n, const GLuint *textures)
GLAPI void GLAPIENTRY glTexParameteri(GLenum target, GLenum pname, GLint param)
#define GL_TEXTURE_MAG_FILTER
void stepParticles(double deltaTime)
GLAPI void GLAPIENTRY glEnableClientState(GLenum cap)
static int num_active_particles
static SDL_bool pointSizeExtensionSupported
struct particle particles[MAX_PARTICLES]
void initializeParticles(void)
GLAPI void GLAPIENTRY glEnable(GLenum cap)
void explodeEmitter(struct particle *emitter)
float randomFloat(float min, float max)
#define SDL_GL_SetAttribute
#define SDL_GetWindowSize
GLAPI void GLAPIENTRY glBindTexture(GLenum target, GLuint texture)
#define SDL_GL_GetDrawableSize
void * SDL_GLContext
An opaque handle to an OpenGL context.
static GLuint particleTextureID
GLAPI void GLAPIENTRY glDrawArrays(GLenum mode, GLint first, GLsizei count)
GLAPI void GLAPIENTRY glGenTextures(GLsizei n, GLuint *textures)
GLAPI void GLAPIENTRY glClear(GLbitfield mask)
GLint GLint GLint GLint GLint GLint y
int main(int argc, char *argv[])
#define SDL_PixelFormatEnumToMasks
#define GL_COLOR_BUFFER_BIT
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int in i)
GLAPI void GLAPIENTRY glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *ptr)
GLAPI void GLAPIENTRY glLoadIdentity(void)
#define SDL_CreateRGBSurface
EGLSurface EGLNativeWindowType * window
GLAPI void GLAPIENTRY glMatrixMode(GLenum mode)
The type used to identify a window.
GLAPI void GLAPIENTRY glPointSize(GLfloat size)
void spawnEmitterParticle(GLfloat x, GLfloat y)
GLAPI void GLAPIENTRY glTexEnvi(GLenum target, GLenum pname, GLint param)
static float pointSizeScale
void spawnTrailFromEmitter(struct particle *emitter)
#define GL_TEXTURE_MIN_FILTER
#define SDL_GetMouseState
#define SDL_GL_SwapWindow
const GLubyte GLuint GLuint GLuint GLuint alpha GLboolean GLboolean GLboolean GLboolean alpha GLint GLint GLsizei GLsizei GLenum type GLenum GLint GLenum GLint GLint GLsizei GLsizei GLint border GLenum GLint GLint GLint GLint GLint GLsizei GLsizei height GLsizei GLsizei GLenum GLenum const GLvoid *pixels GLenum GLint GLint GLint GLint j2 GLdouble GLdouble GLdouble GLdouble GLdouble GLdouble zFar GLenum GLenum GLint *params GLenum GLenum GLint *params GLenum GLenum GLint *params GLenum GLenum GLfloat *params GLenum GLint GLenum GLenum GLvoid *pixels GLenum GLint GLenum GLint *params GLenum GLenum GLint *params GLenum GLsizei const GLvoid *pointer GLenum GLenum const GLint *params GLenum GLfloat GLfloat GLint GLint const GLfloat *points GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat *points GLint GLfloat GLfloat GLint GLfloat GLfloat v2 GLenum GLenum const GLint *params GLdouble GLdouble GLdouble GLdouble GLdouble GLdouble zFar GLenum GLsizei const GLuint *values GLsizei const GLuint const GLclampf *priorities GLfloat GLfloat GLfloat GLfloat w GLint GLint GLsizei GLsizei GLenum GLenum GLvoid *pixels GLfloat GLfloat GLfloat GLfloat y2 GLdouble GLdouble GLdouble GLdouble z GLdouble GLdouble GLdouble GLdouble q GLshort GLshort GLshort GLshort q GLenum GLenum const GLfloat *params GLenum GLenum const GLdouble *params GLenum GLenum const GLint *params glTexImage2D