OpenGL es gluLookAt 函数
来源:互联网 发布:深海逃生剧情 知乎 编辑:程序博客网 时间:2024/05/01 09:26
OpenGL es 没有gluLookAt 函数,从外网找了一个
附链接
gluLookAt函数
为了方便不会墙的同志,附代码
已调试使用,正常!
object c 和 c++混编的同志在使用时删掉以下两个头文件,加入cmath头文件
#import <Foundation/Foundation.h>#import <OpenGLES/EAGL.h>
Somebody asked me for an implementation of gluLookAt() for OpenGL ES. I didn't have one, but I knew where I could get one. The Mesa3D project is a non-licensed, open-source OpenGL-compatible library. Some changes were required to get this function to work under OpenGL ES, but this is, in no way, my work - I just tweaked it a little so that it would compile and run on OpenGL ES 1.1.gluLookAt.h/* * gluLookAt.h * * This is a modified version of the function of the same name from * the Mesa3D project ( http://mesa3d.org/ ), which is licensed * under the MIT license, which allows use, modification, and * redistribution * * In order to work under OpenGL ES, all instances of GLdouble * had to be changed to GLfloat, and all "d" function calls had * to be changed to the "f" versions. * * Original developer's comments have been left in place. * * Out of respect for the original authors, this is licensed under * the Mesa (MIT) license. Original license follows: * * ----------------------------------------------------------------------- * * Copyright (C) 1999-2007 Brian Paul All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */#import <Foundation/Foundation.h>#import <OpenGLES/EAGL.h>#import <OpenGLES/ES1/gl.h>#import <OpenGLES/ES1/glext.h>void gluLookAt(GLfloat eyex, GLfloat eyey, GLfloat eyez, GLfloat centerx, GLfloat centery, GLfloat centerz, GLfloat upx, GLfloat upy, GLfloat upz);gluLookAt.m/* * gluLookAt.c */#include "gluLookAt.h"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 = sqrt(z[0] * z[0] + z[1] * z[1] + z[2] * z[2]); if (mag) { /* mpichler, 19950515 */ 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]; /* mpichler, 19950515 */ /* cross product gives area of parallelogram, which is < 1.0 for * non-perpendicular unit-length vectors; so normalize x, y here */ mag = sqrt(x[0] * x[0] + x[1] * x[1] + x[2] * x[2]); if (mag) { x[0] /= mag; x[1] /= mag; x[2] /= mag; } mag = sqrt(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.0; M(1, 0) = y[0]; M(1, 1) = y[1]; M(1, 2) = y[2]; M(1, 3) = 0.0; M(2, 0) = z[0]; M(2, 1) = z[1]; M(2, 2) = z[2]; M(2, 3) = 0.0; M(3, 0) = 0.0; M(3, 1) = 0.0; M(3, 2) = 0.0; M(3, 3) = 1.0;#undef M glMultMatrixf(m); /* Translate Eye to Origin */ glTranslatef(-eyex, -eyey, -eyez); }
0 0
- OpenGL es gluLookAt 函数
- OpenGL之gluLookAt函数
- OpenGL函数思考-gluLookAt
- openGL中的gluLookAt函数
- Opengl---gluLookAt函数详解
- OpenGL: gluLookAt函数详解
- OpenGL函数思考-gluLookAt
- OpenGL之gluLookAt()函数
- Opengl---gluLookAt函数详解
- Opengl---gluLookAt函数详解
- OpenGL函数思考-gluLookAt
- Opengl---gluLookAt函数详解
- Opengl---gluLookAt函数详解
- Opengl---gluLookAt函数详解
- 实现opengl 中gluLookAt函数
- OpenGL: gluLookAt函数的含义
- gluPerspective and gluLookAt 在OpenGL-ES中的替代
- 小白学opengl之gluLookAt函数例子
- 一维/二维动态数组分配(C语言)
- TCP/IP、Http、Socket的区别
- C语言 printf函数的返回值
- Java 创建不可变对象-final关键字的使用总结
- 为Java说句公道话
- OpenGL es gluLookAt 函数
- jquery实战(1)
- 61. Implement Stack using Queues
- 朴素贝叶斯算法
- Python操作MySQL数据库
- web 微信一些接口说明
- [Maven实战](3)Maven创建项目
- 构建高并发高可用的电商平台架构实践
- bzoj3306 树