OpenGL es gluLookAt 函数

QT 使用OpenGL 进行 3D 绘图 目录 一、成果展示: 二、代码展示: 1、main.cpp 2、MyGLWidget.h 3、MyGLWidget.cpp 三、编译错误 解析: 1、gluPerspective 和 gluLookAt 找不到标识符 2、error: LNK2019: 无法解析的外部符号 __imp_glBegin等 一、成果展示: 二、代码展示: 1、main.cpp #include <QtWidgets/QApplication> #include "myglwidget. 阅读详情

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);
    
}



gluLookAt矩阵、矩阵的转置与求逆矩阵方法 1. gluLookAt矩阵 这次使用opengl es 2.0中,由于里面没有gluLookAt这个函数,参考了网上的一些代码自己封装了一个,经过使用,没发现问题,具体代码如下: void ESUTIL_API esGluLookAt(ESMatrix *result, float eyeX, float eyeY, float eyeZ, float centerX, float ce 阅读详情

相关推荐

小白学opengl之gluLookAt函数例子

#include #include #include #include using namespace std; GLdouble wx,wy,wz;/*returned world x,y,z coords */ void init(void) { glClearColor(0,0,0,0); glShadeModel(GL_FLAT); } void display(vo

1370

gluPerspective和gluLookAt找不到

请添加头文件#include &lt;GL/glu.h&gt;

KJxuexi1840的博客 2585

OpenglES lookat,perspective and Ortho

自己封装的glulookat,gluperspective and gluOrtho,可以在任何平台使用

Opengl---gluLookAt函数详解

下面的一段摘自百度百科: 视点转换 函数原型 void gluLookAt(GLdouble eyex,GLdouble eyey,GLdouble eyez,GLdouble centerx,GLdouble centery,GLdouble centerz,GLdouble upx,GLdouble upy,GLdouble upz); 该函数定义一个视图矩阵,并与当前矩阵相乘。 第

我的新博客 3500

VisionMaster图像源模块的5个隐藏功能:从自动切换到二次开发接口

本文深入解析了VisionMaster图像源模块的5个隐藏功能,从基础的自动切换与字符触发过滤,到高级的脚本扩展与基于COM组件的二次开发接口。这些功能能显著提升工业视觉项目的自动化水平、灵活性与系统集成能力,帮助开发者实现更高效的离线测试流水线和外部精确控制。

rgv23456789的博客 652

LightRAG实战:从零构建中药知识图谱,解锁六种检索模式效能对比

本文详细介绍了如何使用轻量级RAG框架LightRAG从零构建中药知识图谱的实战过程。通过本地部署环境搭建、开源模型配置与《本草纲目》数据导入,文章重点对比了Naive、Local、Global、Hybrid、Mix和Bypass六种检索模式在中药问答中的效能差异,并提供了可视化图谱与优化心得,为开发者构建专业领域智能问答系统提供了实用指南。

weixin_29096377的博客 176

7.OpenGL学习之三维观察

三维观察 如果对比纹理映射和以前的代码,发现多了调用gluLookAt方法语句,如下图所示。 如果没有这条语句,窗口里什么都没有。这其中涉及到三维观察或者变换管线,而三维观察的设置在OpenGL编程中非常重要的。变换管线的处理流程如下图。 类比到我们现实生活 理解上图的意思。如果我们要观察一个物体,我们可以从不同的位置去观察它(视图变换);移动或者旋转它(模型变换);如果把物体画下来

阿兵-AI医疗的专栏 4494

达梦数据库连接报错6001网络通信异常

本文主要记录客户端连接达梦数据库报错6001网络通信异常问题分析过程、问题原因以及问题解决方法。

chen_zizi2025的博客 2772

从零开始学OpenGLES开发——第一章

从零开始学OpenGLES开发——第一章 本教程并非翻译自某文献或者教程,完全是自己学习的总结,所以并不保证百分百正确,只代表个人的理解。 所涉及知识面并不全面,这和个人能力有限有关,只是希望能够起到参考价值。 OpenGL是一个画图的API集合,而OpenGLES是它的一个子集,本教程首先从OpenGL1.0开始入手,跑完第一个例子程序。 然后在将第一个例子程序中的某些用到的接口,换

「花岗岩是甜的」的专栏 8280

Verilog实战:手把手教你实现四路组相联Cache(附完整代码解析)

本文提供了一份详细的Verilog实战指南,手把手教你实现一个四路组相联Cache。内容涵盖从设计规格、核心存储阵列、LRU替换策略到状态机设计的完整流程,并附有代码解析与优化技巧,旨在帮助硬件设计者掌握Cache控制器的RTL实现与调试方法。

pp12345的博客 516

用Matlab机器人工具箱搞定六轴机械臂建模:从DH参数到3D可视化(附完整代码)

本文详细介绍了如何使用Matlab机器人工具箱进行六轴机械臂建模,从DH参数输入到3D可视化全流程解析。通过正运动学验证、逆运动学求解和交互控制等实战技巧,帮助工程师快速掌握机械臂建模核心方法,并提供完整代码示例解决常见问题。

weixin_27372101的博客 394

Opengl ES glulookat和gluPerspective,gluOrtho

最近要将OpenGL 的 程序移植到Opengl ES,glulookat和gluPerspective,gluOrtho 这些函数在OpenGL ES  都不能用, 所以只能自己重新封装了一份,有需要的自取;所有的矩阵都是列主序; https://download.youkuaiyun.com/download/jasonliu_kevin_1993/10804805 ...

JasonLiu_Kevin_1993的博客 423

56-FMC连接器电路设计

FMC连接器电路设计

weixin_66510961的博客 4723

学习android的opengl es

创建一个GLSurfaceView,GLSurfaceView继承自SurfaceView,同时实现Callback, 定义一个内部类RenderRunnable 实现 Runnable,也就是其中运行了一个新开的线程 定义一个接口(非必须),实现Renderer,包括 init()方法、resize(w,h)方法、render()方法 其中render方法作用是渲染一帧

sonikk的专栏 1626

【硬件开发】振铃

如果是开关管的振铃,那么桥臂的SW处产生的振铃会窜入驱动电路,造成的结果就是驱动电路和上桥臂下桥臂之间的SW节点都会有振铃现象。如果是驱动电路的振铃,那么MCU的输出引脚还是正常的PWM,但是到了MOS管两侧就变成带有振铃的PWM波形了。开关振铃产生的原因是MOS管上面的寄生电感当开关管打开时为了保持电流不变感应出的电压会对电源和地产生冲击。开关管的驱动线上的寄生电容和寄生电感导致的振铃为驱动电路振铃。开关管上的寄生电容和寄生电感导致的振铃为开关节点振铃。、电感等元件的存在,导致电路中的电压和。

weixin_62546664的博客 1828

【即插即用模块】卷积篇 | TCSVT 2025 | MFACB:多尺度膨胀融合,快速扩大感受野,多尺度特征精准捕捉!

本文提出了一种新型多尺度融合膨胀卷积模块MFACB,用于增强语义分割任务中的特征表达能力。该模块通过三分支串联膨胀卷积结构快速扩大感受野,采用双路径融合机制(基础信息路径+多尺度信息路径)实现高效上下文聚合。相比传统卷积块,MFACB在保持轻量化的同时显著提升了多尺度特征捕捉能力,实验表明其性能优于基础残差块。该模块支持自定义膨胀率和步长调整,可灵活嵌入不同网络阶段,适用于需要特征增强的视觉任务。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 311

西蒙iphone-OpenGL ES 教程-11

OpenGL ES 11 – 在 3D中移动 (译者:那个。 其实,实际上,我又跳了一章,12节,如何判断在2d世界里点中一个物体,因为我觉得我们这大部分的游戏开发者都已经使用了花生大大的代码,也比较容易的 在2d世界里开发游戏了,这个章节对我们的用处不大。所以我又偷懒了。

记事本 889

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

OpenGL ES for Android研究总结

GLU.gluLookAt(gl, eyeX, eyeY, eyeZ, centerX, centerY, centerZ, upX, upY, upZ)   0>  如果没有主动调用这个函数,系统默认相当于调用了GLU.gluLookAt(gl, 0, 0, 0, 0, 0, 0, 0, 1, 0);        调用gl.glTranslatef(0,0,-1); 这个API后看到的效

ailinty的专栏 1134

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

java3d lookat_基于 OpenGL 进行 3D 图形开发

3D 开发的一般思路转自:http://www.linuxgraphics.cn/graphics/opengl_dev_summary.html3D 开发主要分为三个步骤:建模、渲染、逻辑控制。建模,指通过一些基本图元如点、线、三角形、多边形将物体画出来,一般使用3DMax、MilkShape 等建模工具来完成。具体来说,建模涉及模型的构建、贴纹理、制作动画等。渲染,即使用 OpenGL 图形接...

weixin_39553352的博客 483

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

opengl学习(五)------ 视图(一)

[size=medium] 好吧,我没有思路,就把用到的函数及其含义先罗列出来,等到有思路的时候,再来完成吧。 gluLookAt:设置视觉坐标系。在实际的编程应用中,用户在完成场景的建模后,往往需要选择一个合适的视角或者不停地变换视角,以对场景作为观察。[/size] [code="C++"] void gulLoaaAt(GLdouble eyex, GLdouble ...

iteye_7911的博客 202

iphone-OpenGL ES 教程-11--西蒙

OpenGL ES 11 – 在 3D中移动 (译者:那个。 其实,实际上,我又跳了一章,12节,如何判断在2d世界里点中一个物体,因为我觉得我们这大部分的游戏开发者都已经使用了花生大大的代码,也比较容易的 在2d世界里开发游戏了,这个章节对我们的用处不大。所以我又偷懒了。) 禽流感,忙碌,母亲节,和其他一些东西,这就意味着,我不在此博 客一段时间。所以,现在是时候做事情了。 3

Keivin 3864

gluPerspective and gluLookAt 在OpenGL-ES中的替代

gluPerspective and gluLookAt 在OpenGL-ES中的替代

iversonyang的专栏 2918

对Android的Opengl ES 中setLookAtM函数的一点理解

这几天在搜狐实习,参与一个VR项目。工作需要,研究了下Android平台下的OpenGl的用法。 有一个Matrix类中的setLookAt的函数有一天让我特别困惑。函数形式如下: public static void setLookAtM(float[] rm, int rmOffset, float eyeX, float eyeY, float eyeZ,

qq_28615177的博客 2004

OpenGL: gluPerspective和gluLookAt的关系

看了Opengl的相关程序,发现有些东西还是特别迷茫,尤其是gluLookAt的函数做啥用的,而gluPerspective又有什么功能. 在网上查看到了这篇: 终于搞明白gluPerspective和gluLookAt的关系了(zz) http://cowboy.1988.blog.163.com/blog/static/751057982010101574732212/

u010607947的博客 456
上一篇: Android解锁图案共有多少种?
layject
博客等级 码龄20年 0粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值