⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 glu.c

📁 Compressed file has password
💻 C
字号:
//// cocos2d (incomplete) GLU implementation//// gluLookAt and gluPerspective from:// http://jet.ro/creations (San Angeles Observation)// // #import <OpenGLES/ES1/gl.h>#import <math.h>#import "OpenGL_Internal.h"#include "glu.h"void gluPerspective(GLfloat fovy, GLfloat aspect, GLfloat zNear, GLfloat zFar){		GLfloat xmin, xmax, ymin, ymax;			ymax = zNear * (GLfloat)tanf(fovy * (float)M_PI / 360);	ymin = -ymax;	xmin = ymin * aspect;	xmax = ymax * aspect;			glFrustumf(xmin, xmax,				ymin, ymax,				zNear, zFar);	}void gluLookAt(GLfloat eyex, GLfloat eyey, GLfloat eyez,					  GLfloat centerx, GLfloat centery, GLfloat centerz,					  GLfloat upx, GLfloat upy, GLfloat upz){    GLfloat m[16];    GLfloat x[3], y[3], z[3];    GLfloat mag;	    /* Make rotation matrix */	    /* Z vector */    z[0] = eyex - centerx;    z[1] = eyey - centery;    z[2] = eyez - centerz;    mag = (float)sqrtf(z[0] * z[0] + z[1] * z[1] + z[2] * z[2]);    if (mag) {        z[0] /= mag;        z[1] /= mag;        z[2] /= mag;    }	    /* Y vector */    y[0] = upx;    y[1] = upy;    y[2] = upz;	    /* X vector = Y cross Z */    x[0] = y[1] * z[2] - y[2] * z[1];    x[1] = -y[0] * z[2] + y[2] * z[0];    x[2] = y[0] * z[1] - y[1] * z[0];	    /* Recompute Y = Z cross X */    y[0] = z[1] * x[2] - z[2] * x[1];    y[1] = -z[0] * x[2] + z[2] * x[0];    y[2] = z[0] * x[1] - z[1] * x[0];	    /* cross product gives area of parallelogram, which is < 1.0 for     * non-perpendicular unit-length vectors; so normalize x, y here     */	    mag = (float)sqrtf(x[0] * x[0] + x[1] * x[1] + x[2] * x[2]);    if (mag) {        x[0] /= mag;        x[1] /= mag;        x[2] /= mag;    }	    mag = (float)sqrtf(y[0] * y[0] + y[1] * y[1] + y[2] * y[2]);    if (mag) {        y[0] /= mag;        y[1] /= mag;        y[2] /= mag;    }	#define M(row,col)  m[col*4+row]    M(0, 0) = x[0];    M(0, 1) = x[1];    M(0, 2) = x[2];    M(0, 3) = 0.0f;    M(1, 0) = y[0];    M(1, 1) = y[1];    M(1, 2) = y[2];    M(1, 3) = 0.0f;    M(2, 0) = z[0];    M(2, 1) = z[1];    M(2, 2) = z[2];    M(2, 3) = 0.0f;    M(3, 0) = 0.0f;    M(3, 1) = 0.0f;    M(3, 2) = 0.0f;    M(3, 3) = 1.0f;#undef M    {        int a;        GLfloat fixedM[16];        for (a = 0; a < 16; ++a)            fixedM[a] = m[a];        glMultMatrixf(fixedM);    }	    /* Translate Eye to Origin */    glTranslatef(-eyex, -eyey, -eyez);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -