Don't run indent on the Xcode templates
--HG-- extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%402582
This commit is contained in:
parent
22170d41cd
commit
838787d358
29 changed files with 729 additions and 740 deletions
|
@ -177,7 +177,7 @@ indent:
|
|||
-name '*.h' -o \
|
||||
-name '*.c' -o \
|
||||
-name '*.cc' \) \
|
||||
-print | \
|
||||
-print | fgrep -v ./Xcode | \
|
||||
while read file; do \
|
||||
indent "$$file" -o "$$file.indent"; \
|
||||
if cmp "$$file" "$$file.indent" >/dev/null; then \
|
||||
|
|
|
@ -7,4 +7,5 @@
|
|||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
@ interface SDLMain:NSObject @ end
|
||||
@interface SDLMain : NSObject
|
||||
@end
|
||||
|
|
|
@ -12,8 +12,7 @@
|
|||
|
||||
#include "SDL.h"
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
Uint32 initflags = SDL_INIT_VIDEO; /* See documentation for details */
|
||||
SDL_Surface *screen;
|
||||
|
@ -23,13 +22,14 @@ main(int argc, char *argv[])
|
|||
SDL_Event event;
|
||||
|
||||
/* Initialize the SDL library */
|
||||
if (SDL_Init(initflags) < 0) {
|
||||
fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError());
|
||||
if ( SDL_Init(initflags) < 0 ) {
|
||||
fprintf(stderr, "Couldn't initialize SDL: %s\n",
|
||||
SDL_GetError());
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/* Set 640x480 video mode */
|
||||
screen = SDL_SetVideoMode(640, 480, video_bpp, videoflags);
|
||||
screen=SDL_SetVideoMode(640,480, video_bpp, videoflags);
|
||||
if (screen == NULL) {
|
||||
fprintf(stderr, "Couldn't set 640x480x%d video mode: %s\n",
|
||||
video_bpp, SDL_GetError());
|
||||
|
@ -38,10 +38,10 @@ main(int argc, char *argv[])
|
|||
}
|
||||
|
||||
done = 0;
|
||||
while (!done) {
|
||||
while ( !done ) {
|
||||
|
||||
/* Check for events */
|
||||
while (SDL_PollEvent(&event)) {
|
||||
while ( SDL_PollEvent(&event) ) {
|
||||
switch (event.type) {
|
||||
|
||||
case SDL_MOUSEMOTION:
|
||||
|
@ -61,5 +61,5 @@ main(int argc, char *argv[])
|
|||
|
||||
/* Clean up the SDL library */
|
||||
SDL_Quit();
|
||||
return (0);
|
||||
return(0);
|
||||
}
|
||||
|
|
|
@ -7,10 +7,11 @@
|
|||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
@ interface SDLMain: NSObject - (IBAction) prefsMenu:(id) sender;
|
||||
-(IBAction) newGame:(id) sender;
|
||||
-(IBAction) openGame:(id) sender;
|
||||
-(IBAction) saveGame:(id) sender;
|
||||
-(IBAction) saveGameAs:(id) sender;
|
||||
-(IBAction) help:(id) sender;
|
||||
@interface SDLMain : NSObject
|
||||
- (IBAction)prefsMenu:(id)sender;
|
||||
- (IBAction)newGame:(id)sender;
|
||||
- (IBAction)openGame:(id)sender;
|
||||
- (IBAction)saveGame:(id)sender;
|
||||
- (IBAction)saveGameAs:(id)sender;
|
||||
- (IBAction)help:(id)sender;
|
||||
@end
|
||||
|
|
|
@ -12,8 +12,7 @@
|
|||
|
||||
#include "SDL.h"
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
Uint32 initflags = SDL_INIT_VIDEO; /* See documentation for details */
|
||||
SDL_Surface *screen;
|
||||
|
@ -23,13 +22,14 @@ main(int argc, char *argv[])
|
|||
SDL_Event event;
|
||||
|
||||
/* Initialize the SDL library */
|
||||
if (SDL_Init(initflags) < 0) {
|
||||
fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError());
|
||||
if ( SDL_Init(initflags) < 0 ) {
|
||||
fprintf(stderr, "Couldn't initialize SDL: %s\n",
|
||||
SDL_GetError());
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/* Set 640x480 video mode */
|
||||
screen = SDL_SetVideoMode(640, 480, video_bpp, videoflags);
|
||||
screen=SDL_SetVideoMode(640,480, video_bpp, videoflags);
|
||||
if (screen == NULL) {
|
||||
fprintf(stderr, "Couldn't set 640x480x%d video mode: %s\n",
|
||||
video_bpp, SDL_GetError());
|
||||
|
@ -38,10 +38,10 @@ main(int argc, char *argv[])
|
|||
}
|
||||
|
||||
done = 0;
|
||||
while (!done) {
|
||||
while ( !done ) {
|
||||
|
||||
/* Check for events */
|
||||
while (SDL_PollEvent(&event)) {
|
||||
while ( SDL_PollEvent(&event) ) {
|
||||
switch (event.type) {
|
||||
|
||||
case SDL_MOUSEMOTION:
|
||||
|
@ -61,5 +61,5 @@ main(int argc, char *argv[])
|
|||
|
||||
/* Clean up the SDL library */
|
||||
SDL_Quit();
|
||||
return (0);
|
||||
return(0);
|
||||
}
|
||||
|
|
|
@ -12,7 +12,10 @@
|
|||
extern id gController; // instance of this class from nib
|
||||
|
||||
// Declare SDL_QuartzWindowDelegate (defined in SDL.framework)
|
||||
@interface SDL_QuartzWindowDelegate: NSObject @ end @ interface MyController:NSObject
|
||||
@interface SDL_QuartzWindowDelegate : NSObject
|
||||
@end
|
||||
|
||||
@interface MyController : NSObject
|
||||
{
|
||||
// Interface Builder Outlets
|
||||
IBOutlet id _framesPerSecond;
|
||||
|
@ -24,20 +27,20 @@ extern id gController; // instance of this class from nib
|
|||
int _nSprites;
|
||||
int _max_speed;
|
||||
int _doFlip;
|
||||
Uint8 *_mem;
|
||||
Uint8* _mem;
|
||||
|
||||
SDL_Surface *_screen;
|
||||
SDL_Surface *_sprite;
|
||||
SDL_Rect *_sprite_rects;
|
||||
SDL_Rect *_positions;
|
||||
SDL_Rect *_velocities;
|
||||
SDL_Surface* _screen;
|
||||
SDL_Surface* _sprite;
|
||||
SDL_Rect* _sprite_rects;
|
||||
SDL_Rect* _positions;
|
||||
SDL_Rect* _velocities;
|
||||
int _sprites_visible;
|
||||
Uint16 _sprite_w, _sprite_h;
|
||||
|
||||
int _mouse_x, _mouse_y;
|
||||
}
|
||||
|
||||
// Interface Builder Actions
|
||||
-(IBAction) changeNumberOfSprites:(id) sender;
|
||||
-(IBAction) selectUpdateMode:(id) sender;
|
||||
- (IBAction)changeNumberOfSprites:(id)sender;
|
||||
- (IBAction)selectUpdateMode:(id)sender;
|
||||
@end
|
||||
|
||||
|
|
|
@ -9,7 +9,8 @@
|
|||
#import <AppKit/AppKit.h>
|
||||
|
||||
|
||||
@ interface MyCustomView:NSQuickDrawView {
|
||||
@interface MyCustomView : NSQuickDrawView
|
||||
{
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
|
@ -11,11 +11,17 @@
|
|||
// Be a subclass of SDL_QuartzWindow so SDL will
|
||||
// handle the redraw problems when minimizing the window
|
||||
// This class is defined in SDL.framework
|
||||
@ interface SDL_QuartzWindow:NSWindow @ end
|
||||
@interface SDL_QuartzWindow : NSWindow
|
||||
@end
|
||||
|
||||
// Also assign SDL_QuartzWindowDelegate to the window
|
||||
// to perform other tasks. You can subclass this delegate
|
||||
// if you want to add your own delegation methods
|
||||
// This class is defined in SDL.framework
|
||||
@ interface SDL_QuartzWindowDelegate:NSObject @ end
|
||||
@interface SDL_QuartzWindowDelegate : NSObject
|
||||
@end
|
||||
|
||||
// Declare our custom class
|
||||
@ interface MyCustomWindow:SDL_QuartzWindow @ end
|
||||
@interface MyCustomWindow : SDL_QuartzWindow
|
||||
@end
|
||||
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
@ interface SDLMain:NSObject {
|
||||
@interface SDLMain : NSObject
|
||||
{
|
||||
IBOutlet id _controller;
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
|
@ -9,3 +9,4 @@
|
|||
|
||||
#include <Foundation/Foundation.h>
|
||||
#include <Cocoa/Cocoa.h>
|
||||
|
||||
|
|
|
@ -7,4 +7,5 @@
|
|||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
@ interface SDLMain:NSObject @ end
|
||||
@interface SDLMain : NSObject
|
||||
@end
|
||||
|
|
|
@ -59,8 +59,7 @@ GLenum StrMode = GL_VENDOR;
|
|||
|
||||
GLboolean moving;
|
||||
|
||||
static double
|
||||
mtime(void)
|
||||
static double mtime(void)
|
||||
{
|
||||
struct timeval tk_time;
|
||||
struct timezone tz;
|
||||
|
@ -70,30 +69,28 @@ mtime(void)
|
|||
return 4294.967296 * tk_time.tv_sec + 0.000001 * tk_time.tv_usec;
|
||||
}
|
||||
|
||||
static double
|
||||
filter(double in, double *save)
|
||||
static double filter(double in, double *save)
|
||||
{
|
||||
static double k1 = 0.9;
|
||||
static double k2 = 0.05;
|
||||
|
||||
save[3] = in;
|
||||
save[1] = save[0] * k1 + k2 * (save[3] + save[2]);
|
||||
save[1] = save[0]*k1 + k2*(save[3] + save[2]);
|
||||
|
||||
save[0] = save[1];
|
||||
save[2] = save[3];
|
||||
save[0]=save[1];
|
||||
save[2]=save[3];
|
||||
|
||||
return (save[1]);
|
||||
return(save[1]);
|
||||
}
|
||||
|
||||
void
|
||||
DrawStr(const char *str)
|
||||
void DrawStr(const char *str)
|
||||
{
|
||||
GLint i = 0;
|
||||
|
||||
if (!str)
|
||||
return;
|
||||
if(!str) return;
|
||||
|
||||
while (str[i]) {
|
||||
while(str[i])
|
||||
{
|
||||
glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12, str[i]);
|
||||
i++;
|
||||
}
|
||||
|
@ -137,18 +134,18 @@ InitFishs(void)
|
|||
void
|
||||
Atlantis_Init(void)
|
||||
{
|
||||
static float ambient[] = { 0.2, 0.2, 0.2, 1.0 };
|
||||
static float diffuse[] = { 1.0, 1.0, 1.0, 1.0 };
|
||||
static float position[] = { 0.0, 1.0, 0.0, 0.0 };
|
||||
static float mat_shininess[] = { 90.0 };
|
||||
static float mat_specular[] = { 0.8, 0.8, 0.8, 1.0 };
|
||||
static float mat_diffuse[] = { 0.46, 0.66, 0.795, 1.0 };
|
||||
static float mat_ambient[] = { 0.3, 0.4, 0.5, 1.0 };
|
||||
static float lmodel_ambient[] = { 0.4, 0.4, 0.4, 1.0 };
|
||||
static float lmodel_localviewer[] = { 0.0 };
|
||||
static float ambient[] = {0.2, 0.2, 0.2, 1.0};
|
||||
static float diffuse[] = {1.0, 1.0, 1.0, 1.0};
|
||||
static float position[] = {0.0, 1.0, 0.0, 0.0};
|
||||
static float mat_shininess[] = {90.0};
|
||||
static float mat_specular[] = {0.8, 0.8, 0.8, 1.0};
|
||||
static float mat_diffuse[] = {0.46, 0.66, 0.795, 1.0};
|
||||
static float mat_ambient[] = {0.3, 0.4, 0.5, 1.0};
|
||||
static float lmodel_ambient[] = {0.4, 0.4, 0.4, 1.0};
|
||||
static float lmodel_localviewer[] = {0.0};
|
||||
//GLfloat map1[4] = {0.0, 0.0, 0.0, 0.0};
|
||||
//GLfloat map2[4] = {0.0, 0.0, 0.0, 0.0};
|
||||
static float fog_color[] = { 0.0, 0.5, 0.9, 1.0 };
|
||||
static float fog_color[] = {0.0, 0.5, 0.9, 1.0};
|
||||
|
||||
glFrontFace(GL_CCW);
|
||||
|
||||
|
@ -188,8 +185,7 @@ Atlantis_Reshape(int width, int height)
|
|||
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glLoadIdentity();
|
||||
gluPerspective(60.0, (GLfloat) width / (GLfloat) height, 20000.0,
|
||||
300000.0);
|
||||
gluPerspective(60.0, (GLfloat) width / (GLfloat) height, 20000.0, 300000.0);
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
}
|
||||
|
||||
|
@ -219,7 +215,8 @@ Atlantis_Key(unsigned char key, int x, int y)
|
|||
Timing = !Timing;
|
||||
break;
|
||||
case ' ':
|
||||
switch (StrMode) {
|
||||
switch(StrMode)
|
||||
{
|
||||
case GL_EXTENSIONS:
|
||||
StrMode = GL_VENDOR;
|
||||
break;
|
||||
|
@ -251,7 +248,6 @@ Atlantis_Key(unsigned char key, int x, int y)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
void Display(void)
|
||||
{
|
||||
|
@ -277,7 +273,7 @@ void
|
|||
Atlantis_Display(void)
|
||||
{
|
||||
int i;
|
||||
static double th[4] = { 0.0, 0.0, 0.0, 0.0 };
|
||||
static double th[4] = {0.0, 0.0, 0.0, 0.0};
|
||||
static double t1 = 0.0, t2 = 0.0, t;
|
||||
char num_str[128];
|
||||
|
||||
|
@ -308,46 +304,43 @@ Atlantis_Display(void)
|
|||
DrawWhale(&babyWhale);
|
||||
glPopMatrix();
|
||||
|
||||
if (Timing) {
|
||||
if(Timing)
|
||||
{
|
||||
t2 = mtime();
|
||||
t = t2 - t1;
|
||||
if (t > 0.0001)
|
||||
t = 1.0 / t;
|
||||
if(t > 0.0001) t = 1.0 / t;
|
||||
|
||||
glDisable(GL_LIGHTING);
|
||||
//glDisable(GL_DEPTH_TEST);
|
||||
|
||||
glColor3f(1.0, 0.0, 0.0);
|
||||
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glMatrixMode (GL_PROJECTION);
|
||||
glPushMatrix();
|
||||
glLoadIdentity();
|
||||
glOrtho(0, w_win, 0, h_win, -10.0, 10.0);
|
||||
|
||||
glRasterPos2f(5.0, 5.0);
|
||||
|
||||
switch (StrMode) {
|
||||
switch(StrMode)
|
||||
{
|
||||
case GL_VENDOR:
|
||||
sprintf(num_str, "%0.2f Hz, %dx%d, VENDOR: ", filter(t, th),
|
||||
w_win, h_win);
|
||||
sprintf(num_str, "%0.2f Hz, %dx%d, VENDOR: ", filter(t, th), w_win, h_win);
|
||||
DrawStr(num_str);
|
||||
DrawStr(glGetString(GL_VENDOR));
|
||||
break;
|
||||
case GL_RENDERER:
|
||||
sprintf(num_str, "%0.2f Hz, %dx%d, RENDERER: ", filter(t, th),
|
||||
w_win, h_win);
|
||||
sprintf(num_str, "%0.2f Hz, %dx%d, RENDERER: ", filter(t, th), w_win, h_win);
|
||||
DrawStr(num_str);
|
||||
DrawStr(glGetString(GL_RENDERER));
|
||||
break;
|
||||
case GL_VERSION:
|
||||
sprintf(num_str, "%0.2f Hz, %dx%d, VERSION: ", filter(t, th),
|
||||
w_win, h_win);
|
||||
sprintf(num_str, "%0.2f Hz, %dx%d, VERSION: ", filter(t, th), w_win, h_win);
|
||||
DrawStr(num_str);
|
||||
DrawStr(glGetString(GL_VERSION));
|
||||
break;
|
||||
case GL_EXTENSIONS:
|
||||
sprintf(num_str, "%0.2f Hz, %dx%d, EXTENSIONS: ", filter(t, th),
|
||||
w_win, h_win);
|
||||
sprintf(num_str, "%0.2f Hz, %dx%d, EXTENSIONS: ", filter(t, th), w_win, h_win);
|
||||
DrawStr(num_str);
|
||||
DrawStr(glGetString(GL_EXTENSIONS));
|
||||
break;
|
||||
|
|
|
@ -43,8 +43,7 @@
|
|||
|
||||
#define WHALESPEED 250.0
|
||||
|
||||
typedef struct _fishRec
|
||||
{
|
||||
typedef struct _fishRec {
|
||||
float x, y, z, phi, theta, psi, v;
|
||||
float xt, yt, zt;
|
||||
float htail, vtail;
|
||||
|
|
|
@ -57,10 +57,8 @@ WhalePilot(fishRec * fish)
|
|||
fish->theta = 0.0;
|
||||
fish->psi -= 0.5;
|
||||
|
||||
fish->x +=
|
||||
WHALESPEED * fish->v * cos(fish->psi / RAD) * cos(fish->theta / RAD);
|
||||
fish->y +=
|
||||
WHALESPEED * fish->v * sin(fish->psi / RAD) * cos(fish->theta / RAD);
|
||||
fish->x += WHALESPEED * fish->v * cos(fish->psi / RAD) * cos(fish->theta / RAD);
|
||||
fish->y += WHALESPEED * fish->v * sin(fish->psi / RAD) * cos(fish->theta / RAD);
|
||||
fish->z += WHALESPEED * fish->v * sin(fish->theta / RAD);
|
||||
}
|
||||
|
||||
|
@ -154,10 +152,8 @@ SharkPilot(fishRec * fish)
|
|||
}
|
||||
}
|
||||
|
||||
fish->x +=
|
||||
SHARKSPEED * fish->v * cos(fish->psi / RAD) * cos(fish->theta / RAD);
|
||||
fish->y +=
|
||||
SHARKSPEED * fish->v * sin(fish->psi / RAD) * cos(fish->theta / RAD);
|
||||
fish->x += SHARKSPEED * fish->v * cos(fish->psi / RAD) * cos(fish->theta / RAD);
|
||||
fish->y += SHARKSPEED * fish->v * sin(fish->psi / RAD) * cos(fish->theta / RAD);
|
||||
fish->z += SHARKSPEED * fish->v * sin(fish->theta / RAD);
|
||||
}
|
||||
|
||||
|
|
|
@ -12,15 +12,14 @@
|
|||
|
||||
#include "SDL.h"
|
||||
|
||||
extern void Atlantis_Init();
|
||||
extern void Atlantis_Reshape(int w, int h);
|
||||
extern void Atlantis_Animate();
|
||||
extern void Atlantis_Display();
|
||||
extern void Atlantis_Init ();
|
||||
extern void Atlantis_Reshape (int w, int h);
|
||||
extern void Atlantis_Animate ();
|
||||
extern void Atlantis_Display ();
|
||||
|
||||
static SDL_Surface *gScreen;
|
||||
|
||||
static void
|
||||
initAttributes()
|
||||
static void initAttributes ()
|
||||
{
|
||||
// Setup attributes we want for the OpenGL context
|
||||
|
||||
|
@ -32,45 +31,40 @@ initAttributes()
|
|||
|
||||
// Request a 16-bit depth buffer (without this, there is no depth buffer)
|
||||
value = 16;
|
||||
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, value);
|
||||
SDL_GL_SetAttribute (SDL_GL_DEPTH_SIZE, value);
|
||||
|
||||
|
||||
// Request double-buffered OpenGL
|
||||
// The fact that windows are double-buffered on Mac OS X has no effect
|
||||
// on OpenGL double buffering.
|
||||
value = 1;
|
||||
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, value);
|
||||
SDL_GL_SetAttribute (SDL_GL_DOUBLEBUFFER, value);
|
||||
}
|
||||
|
||||
static void
|
||||
printAttributes()
|
||||
static void printAttributes ()
|
||||
{
|
||||
// Print out attributes of the context we created
|
||||
int nAttr;
|
||||
int i;
|
||||
|
||||
int attr[] = { SDL_GL_RED_SIZE, SDL_GL_BLUE_SIZE, SDL_GL_GREEN_SIZE,
|
||||
SDL_GL_ALPHA_SIZE, SDL_GL_BUFFER_SIZE, SDL_GL_DEPTH_SIZE
|
||||
};
|
||||
SDL_GL_ALPHA_SIZE, SDL_GL_BUFFER_SIZE, SDL_GL_DEPTH_SIZE };
|
||||
|
||||
char *desc[] = { "Red size: %d bits\n", "Blue size: %d bits\n",
|
||||
"Green size: %d bits\n",
|
||||
char *desc[] = { "Red size: %d bits\n", "Blue size: %d bits\n", "Green size: %d bits\n",
|
||||
"Alpha size: %d bits\n", "Color buffer size: %d bits\n",
|
||||
"Depth bufer size: %d bits\n"
|
||||
};
|
||||
"Depth bufer size: %d bits\n" };
|
||||
|
||||
nAttr = sizeof(attr) / sizeof(int);
|
||||
|
||||
for (i = 0; i < nAttr; i++) {
|
||||
|
||||
int value;
|
||||
SDL_GL_GetAttribute(attr[i], &value);
|
||||
printf(desc[i], value);
|
||||
SDL_GL_GetAttribute (attr[i], &value);
|
||||
printf (desc[i], value);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
createSurface(int fullscreen)
|
||||
static void createSurface (int fullscreen)
|
||||
{
|
||||
Uint32 flags = 0;
|
||||
|
||||
|
@ -79,44 +73,41 @@ createSurface(int fullscreen)
|
|||
flags |= SDL_FULLSCREEN;
|
||||
|
||||
// Create window
|
||||
gScreen = SDL_SetVideoMode(640, 480, 0, flags);
|
||||
gScreen = SDL_SetVideoMode (640, 480, 0, flags);
|
||||
if (gScreen == NULL) {
|
||||
|
||||
fprintf(stderr, "Couldn't set 640x480 OpenGL video mode: %s\n",
|
||||
fprintf (stderr, "Couldn't set 640x480 OpenGL video mode: %s\n",
|
||||
SDL_GetError());
|
||||
SDL_Quit();
|
||||
exit(2);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
initGL()
|
||||
static void initGL ()
|
||||
{
|
||||
Atlantis_Init();
|
||||
Atlantis_Reshape(gScreen->w, gScreen->h);
|
||||
Atlantis_Init ();
|
||||
Atlantis_Reshape (gScreen->w, gScreen->h);
|
||||
}
|
||||
|
||||
static void
|
||||
drawGL()
|
||||
static void drawGL ()
|
||||
{
|
||||
Atlantis_Animate();
|
||||
Atlantis_Display();
|
||||
Atlantis_Animate ();
|
||||
Atlantis_Display ();
|
||||
}
|
||||
|
||||
static void
|
||||
mainLoop()
|
||||
static void mainLoop ()
|
||||
{
|
||||
SDL_Event event;
|
||||
int done = 0;
|
||||
int fps = 24;
|
||||
int delay = 1000 / fps;
|
||||
int delay = 1000/fps;
|
||||
int thenTicks = -1;
|
||||
int nowTicks;
|
||||
|
||||
while (!done) {
|
||||
while ( !done ) {
|
||||
|
||||
/* Check for events */
|
||||
while (SDL_PollEvent(&event)) {
|
||||
while ( SDL_PollEvent (&event) ) {
|
||||
switch (event.type) {
|
||||
|
||||
case SDL_MOUSEMOTION:
|
||||
|
@ -136,48 +127,50 @@ mainLoop()
|
|||
// Draw at 24 hz
|
||||
// This approach is not normally recommended - it is better to
|
||||
// use time-based animation and run as fast as possible
|
||||
drawGL();
|
||||
SDL_GL_SwapBuffers();
|
||||
drawGL ();
|
||||
SDL_GL_SwapBuffers ();
|
||||
|
||||
// Time how long each draw-swap-delay cycle takes
|
||||
// and adjust delay to get closer to target framerate
|
||||
if (thenTicks > 0) {
|
||||
nowTicks = SDL_GetTicks();
|
||||
delay += (1000 / fps - (nowTicks - thenTicks));
|
||||
nowTicks = SDL_GetTicks ();
|
||||
delay += (1000/fps - (nowTicks-thenTicks));
|
||||
thenTicks = nowTicks;
|
||||
if (delay < 0)
|
||||
delay = 1000 / fps;
|
||||
} else {
|
||||
thenTicks = SDL_GetTicks();
|
||||
delay = 1000/fps;
|
||||
}
|
||||
else {
|
||||
thenTicks = SDL_GetTicks ();
|
||||
}
|
||||
|
||||
SDL_Delay(delay);
|
||||
SDL_Delay (delay);
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
// Init SDL video subsystem
|
||||
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
|
||||
if ( SDL_Init (SDL_INIT_VIDEO) < 0 ) {
|
||||
|
||||
fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError());
|
||||
fprintf(stderr, "Couldn't initialize SDL: %s\n",
|
||||
SDL_GetError());
|
||||
exit(1);
|
||||
}
|
||||
|
||||
// Set GL context attributes
|
||||
initAttributes();
|
||||
initAttributes ();
|
||||
|
||||
// Create GL context
|
||||
createSurface(0);
|
||||
createSurface (0);
|
||||
|
||||
// Get GL context attributes
|
||||
printAttributes();
|
||||
printAttributes ();
|
||||
|
||||
// Init GL state
|
||||
initGL();
|
||||
initGL ();
|
||||
|
||||
// Draw, get events...
|
||||
mainLoop();
|
||||
mainLoop ();
|
||||
|
||||
// Cleanup
|
||||
SDL_Quit();
|
||||
|
|
|
@ -7,4 +7,5 @@
|
|||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
@ interface SDLMain:NSObject @ end
|
||||
@interface SDLMain : NSObject
|
||||
@end
|
||||
|
|
|
@ -12,8 +12,7 @@
|
|||
|
||||
#include "SDL.h"
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
Uint32 initflags = SDL_INIT_VIDEO; /* See documentation for details */
|
||||
SDL_Surface *screen;
|
||||
|
@ -23,13 +22,14 @@ main(int argc, char *argv[])
|
|||
SDL_Event event;
|
||||
|
||||
/* Initialize the SDL library */
|
||||
if (SDL_Init(initflags) < 0) {
|
||||
fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError());
|
||||
if ( SDL_Init(initflags) < 0 ) {
|
||||
fprintf(stderr, "Couldn't initialize SDL: %s\n",
|
||||
SDL_GetError());
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/* Set 640x480 video mode */
|
||||
screen = SDL_SetVideoMode(640, 480, video_bpp, videoflags);
|
||||
screen=SDL_SetVideoMode(640,480, video_bpp, videoflags);
|
||||
if (screen == NULL) {
|
||||
fprintf(stderr, "Couldn't set 640x480x%d video mode: %s\n",
|
||||
video_bpp, SDL_GetError());
|
||||
|
@ -38,10 +38,10 @@ main(int argc, char *argv[])
|
|||
}
|
||||
|
||||
done = 0;
|
||||
while (!done) {
|
||||
while ( !done ) {
|
||||
|
||||
/* Check for events */
|
||||
while (SDL_PollEvent(&event)) {
|
||||
while ( SDL_PollEvent(&event) ) {
|
||||
switch (event.type) {
|
||||
|
||||
case SDL_MOUSEMOTION:
|
||||
|
@ -61,5 +61,5 @@ main(int argc, char *argv[])
|
|||
|
||||
/* Clean up the SDL library */
|
||||
SDL_Quit();
|
||||
return (0);
|
||||
return(0);
|
||||
}
|
||||
|
|
|
@ -7,10 +7,11 @@
|
|||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
@ interface SDLMain: NSObject - (IBAction) prefsMenu:(id) sender;
|
||||
-(IBAction) newGame:(id) sender;
|
||||
-(IBAction) openGame:(id) sender;
|
||||
-(IBAction) saveGame:(id) sender;
|
||||
-(IBAction) saveGameAs:(id) sender;
|
||||
-(IBAction) help:(id) sender;
|
||||
@interface SDLMain : NSObject
|
||||
- (IBAction)prefsMenu:(id)sender;
|
||||
- (IBAction)newGame:(id)sender;
|
||||
- (IBAction)openGame:(id)sender;
|
||||
- (IBAction)saveGame:(id)sender;
|
||||
- (IBAction)saveGameAs:(id)sender;
|
||||
- (IBAction)help:(id)sender;
|
||||
@end
|
||||
|
|
|
@ -12,8 +12,7 @@
|
|||
|
||||
#include "SDL.h"
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
Uint32 initflags = SDL_INIT_VIDEO; /* See documentation for details */
|
||||
SDL_Surface *screen;
|
||||
|
@ -23,13 +22,14 @@ main(int argc, char *argv[])
|
|||
SDL_Event event;
|
||||
|
||||
/* Initialize the SDL library */
|
||||
if (SDL_Init(initflags) < 0) {
|
||||
fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError());
|
||||
if ( SDL_Init(initflags) < 0 ) {
|
||||
fprintf(stderr, "Couldn't initialize SDL: %s\n",
|
||||
SDL_GetError());
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/* Set 640x480 video mode */
|
||||
screen = SDL_SetVideoMode(640, 480, video_bpp, videoflags);
|
||||
screen=SDL_SetVideoMode(640,480, video_bpp, videoflags);
|
||||
if (screen == NULL) {
|
||||
fprintf(stderr, "Couldn't set 640x480x%d video mode: %s\n",
|
||||
video_bpp, SDL_GetError());
|
||||
|
@ -38,10 +38,10 @@ main(int argc, char *argv[])
|
|||
}
|
||||
|
||||
done = 0;
|
||||
while (!done) {
|
||||
while ( !done ) {
|
||||
|
||||
/* Check for events */
|
||||
while (SDL_PollEvent(&event)) {
|
||||
while ( SDL_PollEvent(&event) ) {
|
||||
switch (event.type) {
|
||||
|
||||
case SDL_MOUSEMOTION:
|
||||
|
@ -61,5 +61,5 @@ main(int argc, char *argv[])
|
|||
|
||||
/* Clean up the SDL library */
|
||||
SDL_Quit();
|
||||
return (0);
|
||||
return(0);
|
||||
}
|
||||
|
|
|
@ -12,7 +12,10 @@
|
|||
extern id gController; // instance of this class from nib
|
||||
|
||||
// Declare SDL_QuartzWindowDelegate (defined in SDL.framework)
|
||||
@interface SDL_QuartzWindowDelegate: NSObject @ end @ interface MyController:NSObject
|
||||
@interface SDL_QuartzWindowDelegate : NSObject
|
||||
@end
|
||||
|
||||
@interface MyController : NSObject
|
||||
{
|
||||
// Interface Builder Outlets
|
||||
IBOutlet id _framesPerSecond;
|
||||
|
@ -24,20 +27,20 @@ extern id gController; // instance of this class from nib
|
|||
int _nSprites;
|
||||
int _max_speed;
|
||||
int _doFlip;
|
||||
Uint8 *_mem;
|
||||
Uint8* _mem;
|
||||
|
||||
SDL_Surface *_screen;
|
||||
SDL_Surface *_sprite;
|
||||
SDL_Rect *_sprite_rects;
|
||||
SDL_Rect *_positions;
|
||||
SDL_Rect *_velocities;
|
||||
SDL_Surface* _screen;
|
||||
SDL_Surface* _sprite;
|
||||
SDL_Rect* _sprite_rects;
|
||||
SDL_Rect* _positions;
|
||||
SDL_Rect* _velocities;
|
||||
int _sprites_visible;
|
||||
Uint16 _sprite_w, _sprite_h;
|
||||
|
||||
int _mouse_x, _mouse_y;
|
||||
}
|
||||
|
||||
// Interface Builder Actions
|
||||
-(IBAction) changeNumberOfSprites:(id) sender;
|
||||
-(IBAction) selectUpdateMode:(id) sender;
|
||||
- (IBAction)changeNumberOfSprites:(id)sender;
|
||||
- (IBAction)selectUpdateMode:(id)sender;
|
||||
@end
|
||||
|
||||
|
|
|
@ -9,7 +9,8 @@
|
|||
#import <AppKit/AppKit.h>
|
||||
|
||||
|
||||
@ interface MyCustomView:NSQuickDrawView {
|
||||
@interface MyCustomView : NSQuickDrawView
|
||||
{
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
|
@ -11,11 +11,17 @@
|
|||
// Be a subclass of SDL_QuartzWindow so SDL will
|
||||
// handle the redraw problems when minimizing the window
|
||||
// This class is defined in SDL.framework
|
||||
@ interface SDL_QuartzWindow:NSWindow @ end
|
||||
@interface SDL_QuartzWindow : NSWindow
|
||||
@end
|
||||
|
||||
// Also assign SDL_QuartzWindowDelegate to the window
|
||||
// to perform other tasks. You can subclass this delegate
|
||||
// if you want to add your own delegation methods
|
||||
// This class is defined in SDL.framework
|
||||
@ interface SDL_QuartzWindowDelegate:NSObject @ end
|
||||
@interface SDL_QuartzWindowDelegate : NSObject
|
||||
@end
|
||||
|
||||
// Declare our custom class
|
||||
@ interface MyCustomWindow:SDL_QuartzWindow @ end
|
||||
@interface MyCustomWindow : SDL_QuartzWindow
|
||||
@end
|
||||
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
@ interface SDLMain:NSObject {
|
||||
@interface SDLMain : NSObject
|
||||
{
|
||||
IBOutlet id _controller;
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
|
@ -7,4 +7,5 @@
|
|||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
@ interface SDLMain:NSObject @ end
|
||||
@interface SDLMain : NSObject
|
||||
@end
|
||||
|
|
|
@ -59,8 +59,7 @@ GLenum StrMode = GL_VENDOR;
|
|||
|
||||
GLboolean moving;
|
||||
|
||||
static double
|
||||
mtime(void)
|
||||
static double mtime(void)
|
||||
{
|
||||
struct timeval tk_time;
|
||||
struct timezone tz;
|
||||
|
@ -70,30 +69,28 @@ mtime(void)
|
|||
return 4294.967296 * tk_time.tv_sec + 0.000001 * tk_time.tv_usec;
|
||||
}
|
||||
|
||||
static double
|
||||
filter(double in, double *save)
|
||||
static double filter(double in, double *save)
|
||||
{
|
||||
static double k1 = 0.9;
|
||||
static double k2 = 0.05;
|
||||
|
||||
save[3] = in;
|
||||
save[1] = save[0] * k1 + k2 * (save[3] + save[2]);
|
||||
save[1] = save[0]*k1 + k2*(save[3] + save[2]);
|
||||
|
||||
save[0] = save[1];
|
||||
save[2] = save[3];
|
||||
save[0]=save[1];
|
||||
save[2]=save[3];
|
||||
|
||||
return (save[1]);
|
||||
return(save[1]);
|
||||
}
|
||||
|
||||
void
|
||||
DrawStr(const char *str)
|
||||
void DrawStr(const char *str)
|
||||
{
|
||||
GLint i = 0;
|
||||
|
||||
if (!str)
|
||||
return;
|
||||
if(!str) return;
|
||||
|
||||
while (str[i]) {
|
||||
while(str[i])
|
||||
{
|
||||
glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12, str[i]);
|
||||
i++;
|
||||
}
|
||||
|
@ -137,18 +134,18 @@ InitFishs(void)
|
|||
void
|
||||
Atlantis_Init(void)
|
||||
{
|
||||
static float ambient[] = { 0.2, 0.2, 0.2, 1.0 };
|
||||
static float diffuse[] = { 1.0, 1.0, 1.0, 1.0 };
|
||||
static float position[] = { 0.0, 1.0, 0.0, 0.0 };
|
||||
static float mat_shininess[] = { 90.0 };
|
||||
static float mat_specular[] = { 0.8, 0.8, 0.8, 1.0 };
|
||||
static float mat_diffuse[] = { 0.46, 0.66, 0.795, 1.0 };
|
||||
static float mat_ambient[] = { 0.3, 0.4, 0.5, 1.0 };
|
||||
static float lmodel_ambient[] = { 0.4, 0.4, 0.4, 1.0 };
|
||||
static float lmodel_localviewer[] = { 0.0 };
|
||||
static float ambient[] = {0.2, 0.2, 0.2, 1.0};
|
||||
static float diffuse[] = {1.0, 1.0, 1.0, 1.0};
|
||||
static float position[] = {0.0, 1.0, 0.0, 0.0};
|
||||
static float mat_shininess[] = {90.0};
|
||||
static float mat_specular[] = {0.8, 0.8, 0.8, 1.0};
|
||||
static float mat_diffuse[] = {0.46, 0.66, 0.795, 1.0};
|
||||
static float mat_ambient[] = {0.3, 0.4, 0.5, 1.0};
|
||||
static float lmodel_ambient[] = {0.4, 0.4, 0.4, 1.0};
|
||||
static float lmodel_localviewer[] = {0.0};
|
||||
//GLfloat map1[4] = {0.0, 0.0, 0.0, 0.0};
|
||||
//GLfloat map2[4] = {0.0, 0.0, 0.0, 0.0};
|
||||
static float fog_color[] = { 0.0, 0.5, 0.9, 1.0 };
|
||||
static float fog_color[] = {0.0, 0.5, 0.9, 1.0};
|
||||
|
||||
glFrontFace(GL_CCW);
|
||||
|
||||
|
@ -188,8 +185,7 @@ Atlantis_Reshape(int width, int height)
|
|||
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glLoadIdentity();
|
||||
gluPerspective(60.0, (GLfloat) width / (GLfloat) height, 20000.0,
|
||||
300000.0);
|
||||
gluPerspective(60.0, (GLfloat) width / (GLfloat) height, 20000.0, 300000.0);
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
}
|
||||
|
||||
|
@ -219,7 +215,8 @@ Atlantis_Key(unsigned char key, int x, int y)
|
|||
Timing = !Timing;
|
||||
break;
|
||||
case ' ':
|
||||
switch (StrMode) {
|
||||
switch(StrMode)
|
||||
{
|
||||
case GL_EXTENSIONS:
|
||||
StrMode = GL_VENDOR;
|
||||
break;
|
||||
|
@ -251,7 +248,6 @@ Atlantis_Key(unsigned char key, int x, int y)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
void Display(void)
|
||||
{
|
||||
|
@ -277,7 +273,7 @@ void
|
|||
Atlantis_Display(void)
|
||||
{
|
||||
int i;
|
||||
static double th[4] = { 0.0, 0.0, 0.0, 0.0 };
|
||||
static double th[4] = {0.0, 0.0, 0.0, 0.0};
|
||||
static double t1 = 0.0, t2 = 0.0, t;
|
||||
char num_str[128];
|
||||
|
||||
|
@ -308,46 +304,43 @@ Atlantis_Display(void)
|
|||
DrawWhale(&babyWhale);
|
||||
glPopMatrix();
|
||||
|
||||
if (Timing) {
|
||||
if(Timing)
|
||||
{
|
||||
t2 = mtime();
|
||||
t = t2 - t1;
|
||||
if (t > 0.0001)
|
||||
t = 1.0 / t;
|
||||
if(t > 0.0001) t = 1.0 / t;
|
||||
|
||||
glDisable(GL_LIGHTING);
|
||||
//glDisable(GL_DEPTH_TEST);
|
||||
|
||||
glColor3f(1.0, 0.0, 0.0);
|
||||
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glMatrixMode (GL_PROJECTION);
|
||||
glPushMatrix();
|
||||
glLoadIdentity();
|
||||
glOrtho(0, w_win, 0, h_win, -10.0, 10.0);
|
||||
|
||||
glRasterPos2f(5.0, 5.0);
|
||||
|
||||
switch (StrMode) {
|
||||
switch(StrMode)
|
||||
{
|
||||
case GL_VENDOR:
|
||||
sprintf(num_str, "%0.2f Hz, %dx%d, VENDOR: ", filter(t, th),
|
||||
w_win, h_win);
|
||||
sprintf(num_str, "%0.2f Hz, %dx%d, VENDOR: ", filter(t, th), w_win, h_win);
|
||||
DrawStr(num_str);
|
||||
DrawStr(glGetString(GL_VENDOR));
|
||||
break;
|
||||
case GL_RENDERER:
|
||||
sprintf(num_str, "%0.2f Hz, %dx%d, RENDERER: ", filter(t, th),
|
||||
w_win, h_win);
|
||||
sprintf(num_str, "%0.2f Hz, %dx%d, RENDERER: ", filter(t, th), w_win, h_win);
|
||||
DrawStr(num_str);
|
||||
DrawStr(glGetString(GL_RENDERER));
|
||||
break;
|
||||
case GL_VERSION:
|
||||
sprintf(num_str, "%0.2f Hz, %dx%d, VERSION: ", filter(t, th),
|
||||
w_win, h_win);
|
||||
sprintf(num_str, "%0.2f Hz, %dx%d, VERSION: ", filter(t, th), w_win, h_win);
|
||||
DrawStr(num_str);
|
||||
DrawStr(glGetString(GL_VERSION));
|
||||
break;
|
||||
case GL_EXTENSIONS:
|
||||
sprintf(num_str, "%0.2f Hz, %dx%d, EXTENSIONS: ", filter(t, th),
|
||||
w_win, h_win);
|
||||
sprintf(num_str, "%0.2f Hz, %dx%d, EXTENSIONS: ", filter(t, th), w_win, h_win);
|
||||
DrawStr(num_str);
|
||||
DrawStr(glGetString(GL_EXTENSIONS));
|
||||
break;
|
||||
|
|
|
@ -43,8 +43,7 @@
|
|||
|
||||
#define WHALESPEED 250.0
|
||||
|
||||
typedef struct _fishRec
|
||||
{
|
||||
typedef struct _fishRec {
|
||||
float x, y, z, phi, theta, psi, v;
|
||||
float xt, yt, zt;
|
||||
float htail, vtail;
|
||||
|
|
|
@ -57,10 +57,8 @@ WhalePilot(fishRec * fish)
|
|||
fish->theta = 0.0;
|
||||
fish->psi -= 0.5;
|
||||
|
||||
fish->x +=
|
||||
WHALESPEED * fish->v * cos(fish->psi / RAD) * cos(fish->theta / RAD);
|
||||
fish->y +=
|
||||
WHALESPEED * fish->v * sin(fish->psi / RAD) * cos(fish->theta / RAD);
|
||||
fish->x += WHALESPEED * fish->v * cos(fish->psi / RAD) * cos(fish->theta / RAD);
|
||||
fish->y += WHALESPEED * fish->v * sin(fish->psi / RAD) * cos(fish->theta / RAD);
|
||||
fish->z += WHALESPEED * fish->v * sin(fish->theta / RAD);
|
||||
}
|
||||
|
||||
|
@ -154,10 +152,8 @@ SharkPilot(fishRec * fish)
|
|||
}
|
||||
}
|
||||
|
||||
fish->x +=
|
||||
SHARKSPEED * fish->v * cos(fish->psi / RAD) * cos(fish->theta / RAD);
|
||||
fish->y +=
|
||||
SHARKSPEED * fish->v * sin(fish->psi / RAD) * cos(fish->theta / RAD);
|
||||
fish->x += SHARKSPEED * fish->v * cos(fish->psi / RAD) * cos(fish->theta / RAD);
|
||||
fish->y += SHARKSPEED * fish->v * sin(fish->psi / RAD) * cos(fish->theta / RAD);
|
||||
fish->z += SHARKSPEED * fish->v * sin(fish->theta / RAD);
|
||||
}
|
||||
|
||||
|
|
|
@ -12,15 +12,14 @@
|
|||
|
||||
#include "SDL.h"
|
||||
|
||||
extern void Atlantis_Init();
|
||||
extern void Atlantis_Reshape(int w, int h);
|
||||
extern void Atlantis_Animate();
|
||||
extern void Atlantis_Display();
|
||||
extern void Atlantis_Init ();
|
||||
extern void Atlantis_Reshape (int w, int h);
|
||||
extern void Atlantis_Animate ();
|
||||
extern void Atlantis_Display ();
|
||||
|
||||
static SDL_Surface *gScreen;
|
||||
|
||||
static void
|
||||
initAttributes()
|
||||
static void initAttributes ()
|
||||
{
|
||||
// Setup attributes we want for the OpenGL context
|
||||
|
||||
|
@ -32,45 +31,40 @@ initAttributes()
|
|||
|
||||
// Request a 16-bit depth buffer (without this, there is no depth buffer)
|
||||
value = 16;
|
||||
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, value);
|
||||
SDL_GL_SetAttribute (SDL_GL_DEPTH_SIZE, value);
|
||||
|
||||
|
||||
// Request double-buffered OpenGL
|
||||
// The fact that windows are double-buffered on Mac OS X has no effect
|
||||
// on OpenGL double buffering.
|
||||
value = 1;
|
||||
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, value);
|
||||
SDL_GL_SetAttribute (SDL_GL_DOUBLEBUFFER, value);
|
||||
}
|
||||
|
||||
static void
|
||||
printAttributes()
|
||||
static void printAttributes ()
|
||||
{
|
||||
// Print out attributes of the context we created
|
||||
int nAttr;
|
||||
int i;
|
||||
|
||||
int attr[] = { SDL_GL_RED_SIZE, SDL_GL_BLUE_SIZE, SDL_GL_GREEN_SIZE,
|
||||
SDL_GL_ALPHA_SIZE, SDL_GL_BUFFER_SIZE, SDL_GL_DEPTH_SIZE
|
||||
};
|
||||
SDL_GL_ALPHA_SIZE, SDL_GL_BUFFER_SIZE, SDL_GL_DEPTH_SIZE };
|
||||
|
||||
char *desc[] = { "Red size: %d bits\n", "Blue size: %d bits\n",
|
||||
"Green size: %d bits\n",
|
||||
char *desc[] = { "Red size: %d bits\n", "Blue size: %d bits\n", "Green size: %d bits\n",
|
||||
"Alpha size: %d bits\n", "Color buffer size: %d bits\n",
|
||||
"Depth bufer size: %d bits\n"
|
||||
};
|
||||
"Depth bufer size: %d bits\n" };
|
||||
|
||||
nAttr = sizeof(attr) / sizeof(int);
|
||||
|
||||
for (i = 0; i < nAttr; i++) {
|
||||
|
||||
int value;
|
||||
SDL_GL_GetAttribute(attr[i], &value);
|
||||
printf(desc[i], value);
|
||||
SDL_GL_GetAttribute (attr[i], &value);
|
||||
printf (desc[i], value);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
createSurface(int fullscreen)
|
||||
static void createSurface (int fullscreen)
|
||||
{
|
||||
Uint32 flags = 0;
|
||||
|
||||
|
@ -79,44 +73,41 @@ createSurface(int fullscreen)
|
|||
flags |= SDL_FULLSCREEN;
|
||||
|
||||
// Create window
|
||||
gScreen = SDL_SetVideoMode(640, 480, 0, flags);
|
||||
gScreen = SDL_SetVideoMode (640, 480, 0, flags);
|
||||
if (gScreen == NULL) {
|
||||
|
||||
fprintf(stderr, "Couldn't set 640x480 OpenGL video mode: %s\n",
|
||||
fprintf (stderr, "Couldn't set 640x480 OpenGL video mode: %s\n",
|
||||
SDL_GetError());
|
||||
SDL_Quit();
|
||||
exit(2);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
initGL()
|
||||
static void initGL ()
|
||||
{
|
||||
Atlantis_Init();
|
||||
Atlantis_Reshape(gScreen->w, gScreen->h);
|
||||
Atlantis_Init ();
|
||||
Atlantis_Reshape (gScreen->w, gScreen->h);
|
||||
}
|
||||
|
||||
static void
|
||||
drawGL()
|
||||
static void drawGL ()
|
||||
{
|
||||
Atlantis_Animate();
|
||||
Atlantis_Display();
|
||||
Atlantis_Animate ();
|
||||
Atlantis_Display ();
|
||||
}
|
||||
|
||||
static void
|
||||
mainLoop()
|
||||
static void mainLoop ()
|
||||
{
|
||||
SDL_Event event;
|
||||
int done = 0;
|
||||
int fps = 24;
|
||||
int delay = 1000 / fps;
|
||||
int delay = 1000/fps;
|
||||
int thenTicks = -1;
|
||||
int nowTicks;
|
||||
|
||||
while (!done) {
|
||||
while ( !done ) {
|
||||
|
||||
/* Check for events */
|
||||
while (SDL_PollEvent(&event)) {
|
||||
while ( SDL_PollEvent (&event) ) {
|
||||
switch (event.type) {
|
||||
|
||||
case SDL_MOUSEMOTION:
|
||||
|
@ -136,48 +127,50 @@ mainLoop()
|
|||
// Draw at 24 hz
|
||||
// This approach is not normally recommended - it is better to
|
||||
// use time-based animation and run as fast as possible
|
||||
drawGL();
|
||||
SDL_GL_SwapBuffers();
|
||||
drawGL ();
|
||||
SDL_GL_SwapBuffers ();
|
||||
|
||||
// Time how long each draw-swap-delay cycle takes
|
||||
// and adjust delay to get closer to target framerate
|
||||
if (thenTicks > 0) {
|
||||
nowTicks = SDL_GetTicks();
|
||||
delay += (1000 / fps - (nowTicks - thenTicks));
|
||||
nowTicks = SDL_GetTicks ();
|
||||
delay += (1000/fps - (nowTicks-thenTicks));
|
||||
thenTicks = nowTicks;
|
||||
if (delay < 0)
|
||||
delay = 1000 / fps;
|
||||
} else {
|
||||
thenTicks = SDL_GetTicks();
|
||||
delay = 1000/fps;
|
||||
}
|
||||
else {
|
||||
thenTicks = SDL_GetTicks ();
|
||||
}
|
||||
|
||||
SDL_Delay(delay);
|
||||
SDL_Delay (delay);
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
// Init SDL video subsystem
|
||||
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
|
||||
if ( SDL_Init (SDL_INIT_VIDEO) < 0 ) {
|
||||
|
||||
fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError());
|
||||
fprintf(stderr, "Couldn't initialize SDL: %s\n",
|
||||
SDL_GetError());
|
||||
exit(1);
|
||||
}
|
||||
|
||||
// Set GL context attributes
|
||||
initAttributes();
|
||||
initAttributes ();
|
||||
|
||||
// Create GL context
|
||||
createSurface(0);
|
||||
createSurface (0);
|
||||
|
||||
// Get GL context attributes
|
||||
printAttributes();
|
||||
printAttributes ();
|
||||
|
||||
// Init GL state
|
||||
initGL();
|
||||
initGL ();
|
||||
|
||||
// Draw, get events...
|
||||
mainLoop();
|
||||
mainLoop ();
|
||||
|
||||
// Cleanup
|
||||
SDL_Quit();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue