other.cpp
资源名称:brm2.rar [点击查看]
上传用户:liujun12jf
上传日期:2022-07-12
资源大小:638k
文件大小:5k
源码类别:
OpenGL
开发平台:
Visual C++
- #include "other.h"
- // this function stores current matrix (useful after glulookat) and can restore it later
- void glxMatrix(bool b) // holds one matrix ('1'nput - save current matrix, '0'utput - use saved matrix)
- {
- static float f[16];
- if (b)
- {
- glGetFloatv(GL_MODELVIEW_MATRIX, f);
- }
- else // (!b)
- {
- glMultMatrixf(f);
- }
- }
- /*********************/
- /* MOTION BLUR CLASS */
- CMotionBlur::CMotionBlur()
- {
- var_return = 0.99f;
- var_accum = 0.99f;
- var_mult = 0.5f;
- enabled = false;
- }
- void CMotionBlur::Enable()
- { enabled = 1; }
- void CMotionBlur::Disable()
- { enabled = 0; }
- void CMotionBlur::Switch()
- { enabled = !enabled; }
- void CMotionBlur::step(int i, float var)
- {
- if (!enabled) return;
- switch(i)
- {
- case 1: acc_return(var); break;
- case 2: acc_accum(var); break;
- case 3: acc_mult(var); break;
- case 23: acc_accum(var); acc_mult(var); break;
- default: break;
- }
- }
- void CMotionBlur::acc_return(float var)
- {
- if (var == -1) var = var_return;
- glAccum(GL_RETURN, var);
- }
- void CMotionBlur::acc_accum(float var)
- {
- if (var == -1) var = var_accum;
- glAccum(GL_ACCUM, var);
- }
- void CMotionBlur::acc_mult(float var)
- {
- if (var == -1) var = var_mult;
- glAccum(GL_MULT, var);
- }
- /* END OF MOTION BLUR CLASS */
- /****************************/
- float rnd(float fMin, float fMax)
- {
- float fRandNum = (float)rand () / RAND_MAX;
- return fMin + (fMax - fMin) * fRandNum;
- }
- bool Clampf(float *f, float min, float max)
- {
- if (*f < min)
- {
- *f = min;
- return 1;
- }
- if (*f > max)
- {
- *f = max;
- return 1;
- }
- return 0;
- }
- bool Clampi(int *i, int min, int max)
- {
- if (*i < min)
- {
- *i = min;
- return 1;
- }
- if (*i > max)
- {
- *i = max;
- return 1;
- }
- return 0;
- }
- void ftoa(float f, char *str)
- {
- sprintf(str, "%11.3f", f);
- }
- ////////////////////////////////////////////////////////////////////////////////
- void errf(char *message, char *var)
- {
- static char filename[64]="errors.txt";
- static char error[256];
- char t[16];
- GetDayTimeS(t);
- strcpy(error, t);
- strcat(error, " :: ");
- strcat(error, message);
- strcat(error, " ( ");
- strcat(error, var);
- strcat(error, " )n");
- FILE *fff;
- if (fff=fopen(filename, "a"))
- {
- char tmp[1]; fgets(tmp, 1, fff); // this goes to eof :))
- fputs(error, fff);
- fclose(fff);
- }
- }
- ////////////////////////////////////////////////////////////////////////////////
- void renderCube(CVector v, float t)
- {
- glBegin(GL_QUADS);
- // front
- glNormal3f(0.0, 0.0, 1.0);
- glTexCoord2f(0.0, 0.0); glVertex3f(-v.x, -v.y, v.z);
- glTexCoord2f(t, 0.0); glVertex3f( v.x, -v.y, v.z);
- glTexCoord2f(t, t); glVertex3f( v.x, v.y, v.z);
- glTexCoord2f(0.0, t); glVertex3f(-v.x, v.y, v.z);
- // back
- glNormal3f(0.0, 0.0, -1.0);
- glTexCoord2f(0.0, 0.0); glVertex3f( v.x, -v.y, -v.z);
- glTexCoord2f(t, 0.0); glVertex3f(-v.x, -v.y, -v.z);
- glTexCoord2f(t, t); glVertex3f(-v.x, v.y, -v.z);
- glTexCoord2f(0.0, t); glVertex3f( v.x, v.y, -v.z);
- // top
- glNormal3f(0.0, 1.0, 0.0);
- glTexCoord2f(0.0, 0.0); glVertex3f(-v.x, v.y, v.z);
- glTexCoord2f(t, 0.0); glVertex3f( v.x, v.y, v.z);
- glTexCoord2f(t, t); glVertex3f( v.x, v.y, -v.z);
- glTexCoord2f(0.0, t); glVertex3f(-v.x, v.y, -v.z);
- // bottom
- glNormal3f(0.0, -1.0, 0.0);
- glTexCoord2f(0.0, 0.0); glVertex3f(-v.x, -v.y, -v.z);
- glTexCoord2f(t, 0.0); glVertex3f( v.x, -v.y, -v.z);
- glTexCoord2f(t, t); glVertex3f( v.x, -v.y, v.z);
- glTexCoord2f(0.0, t); glVertex3f(-v.x, -v.y, v.z);
- // left
- glNormal3f(-1.0, 0.0, 0.0);
- glTexCoord2f(0.0, 0.0); glVertex3f(-v.x, -v.y, -v.z);
- glTexCoord2f(t, 0.0); glVertex3f(-v.x, -v.y, v.z);
- glTexCoord2f(t, t); glVertex3f(-v.x, v.y, v.z);
- glTexCoord2f(0.0, t); glVertex3f(-v.x, v.y, -v.z);
- // right
- glNormal3f(1.0, 0.0, 0.0);
- glTexCoord2f(0.0, 0.0); glVertex3f(v.x, -v.y, v.z);
- glTexCoord2f(t, 0.0); glVertex3f(v.x, -v.y, -v.z);
- glTexCoord2f(t, t); glVertex3f(v.x, v.y, -v.z);
- glTexCoord2f(0.0, t); glVertex3f(v.x, v.y, v.z);
- glEnd();
- }
- ////////////////////////////////////////////////////////////////////////////////
- void err(char *text, char *title)
- {
- MessageBox( NULL, text, title, MB_OK | MB_ICONERROR );
- }
- ////////////////////////////////////////////////////////////////////////////////
- void errfi(char *txt, float nmb1, float nmb2, float nmb3)
- {
- char str[256];
- err2str(str, txt, nmb1, nmb2, nmb3);
- errf(txt, str);
- }
- void erri(char *txt, float nmb1, float nmb2, float nmb3)
- {
- char str[256];
- err2str(str, txt, nmb1, nmb2, nmb3);
- err(str, txt);
- }
- void err2str(char *str, char *txt, float nmb1, float nmb2, float nmb3)
- {
- char brm[16];
- // char str[256];
- ftoa(nmb1, brm); strcpy(str, brm);
- if (nmb2 != -1.111f)
- {
- strcat(str, ", "); ftoa(nmb2, brm); strcat(str, brm);
- if (nmb3 != -1.111f)
- {
- strcat(str, ", "); ftoa(nmb3, brm); strcat(str, brm);
- }
- }
- }
- s_time_hms GetDayTime()
- {
- s_time_hms tt;
- int t = time(0);
- tt.s = t % 60; t /= 60;
- tt.m = t % 60; t /= 60;
- tt.h = t % 24;
- tt.h += 2; // lol :)
- return tt;
- }
- void GetDayTimeS(char *s)
- {
- char str[32];
- char q[8];
- s_time_hms t = GetDayTime();
- itoa(t.h, q, 10); strcpy(str, q); strcat(str, ":");
- itoa(t.m, q, 10); strcat(str, q); strcat(str, ":");
- itoa(t.s, q, 10); strcat(str, q);
- strcpy(s, str);
- }
English
