OpenGL(13)GLU库API

2024-02-15 00:08
文章标签 api 13 opengl glu

本文主要是介绍OpenGL(13)GLU库API,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

/************************http://blog.csdn.net/sunboyiris*************************************/   
//根据OpenGL或GLU错误代码产生错误字符串 
const GLubyte* APIENTRY gluErrorString (GLenum   errCode);const wchar_t* APIENTRY gluErrorUnicodeStringEXT (GLenum   errCode);//得到一个描述GLU版本号或支持GLU扩展调用的字符串 
const GLubyte* APIENTRY gluGetString (GLenum   name);/* near和far默认为-1和1,此函数决定一个平行六面体 */
void APIENTRY gluOrtho2D (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top);/*  gluPerspective这个函数指定了观察的视景体(frustum为锥台的意思,通常译为视景体)在世界坐标系中的具体大小 */
void APIENTRY gluPerspective (GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar);/*将裁剪区域变成一个单位立方体.它是用来根据当前鼠标选择区域生成一个相应的投影矩阵的。这里面头两个参数不是这个选择区域的左上角位置,而是整个区域的中心位置。如果错把它当成左上角,选择的区域就会斜向上有个偏移。 */
void APIENTRY gluPickMatrix (GLdouble x, GLdouble y, GLdouble width, GLdouble height, GLint    viewport[4]);/* 该函数定义一个视图矩阵,并与当前矩阵相乘。
第一组eyex, eyey,eyez 相机在世界坐标的位置
第二组centerx,centery,centerz 相机镜头对准的物体在世界坐标的位置
第三组upx,upy,upz 相机向上的方向在世界坐标中的方向
你把相机想象成为你自己的脑袋:
第一组数据就是脑袋的位置
第二组数据就是眼睛看的物体的位置
第三组就是头顶朝向的方向(因为你可以歪着头看同一个物体)  */
void APIENTRY gluLookAt (GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx, GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy, GLdouble upz);/* 
用于返回变换后的窗口坐标
基本思路
1、将输入的顶点,通过模型视图矩阵,变换到模型视图矩阵的坐标系中;2、将模型视图矩阵中的顶点,再变换到投影矩阵中;3、将顶点缩放到[0, 1]的映射区间中;4、通过视口的位置和大小,计算出当前3D顶点中的屏幕坐标(2D坐标) */
int APIENTRY gluProject (GLdouble        objx, GLdouble        objy, GLdouble        objz,  const GLdouble  modelMatrix[16], const GLdouble  projMatrix[16], const GLint     viewport[4], GLdouble        *winx, GLdouble        *winy, GLdouble        *winz);/* 
gluPorject反过来的过程
思路:
1、首先,需要将输入的顶点,通过视口变换到[0, 1]之间;
2、然后将顶点缩放到[-1, 1]之间,就是上面代码中的scaleMat矩阵的逆矩阵
3、然后乘上投影矩阵的逆矩阵;
4、最后就是乘上模型视图矩阵的逆矩阵;*/
int APIENTRY gluUnProject (GLdouble       winx, GLdouble       winy, GLdouble       winz, const GLdouble modelMatrix[16], const GLdouble projMatrix[16], const GLint    viewport[4], GLdouble       *objx, GLdouble       *objy, GLdouble       *objz);//gluScaleImage这个函数用适当的像素存储模式改变一个像素图像的大小来读取源图像的像素数据然后把像素写入新的目标图像
int APIENTRY gluScaleImage (GLenum      format, GLint       widthin, GLint       heightin, GLenum      typein, const void  *datain, GLint       widthout, GLint       heightout, GLenum      typeout, void        *dataout);/* 如果已经创建0级(分辨率最高的)mipmap, 可以使用函数gluBuild1DMipmaps(), gluBuild2DMipmaps() 和 gluBuild3DMipmaps()来定义和创建mipmap金字塔.塔顶为1X1(对于一维纹理为1; 三维纹理为1X1X1)的mipmap. 如初始图像的大小不是2的幂, 可以使用函数gluBuild*DMipmaps()将图像大小缩放到最接近2的幂,
如纹理太大, 可以使用函数gluBuild*DMipmaps()将图像缩小到足够的资源来存储它(使用GL_PROXY_TEXTURE机制确定). */
int APIENTRY gluBuild1DMipmaps (GLenum      target, GLint       components, GLint       width, GLenum      format, GLenum      type, const void  *data);int APIENTRY gluBuild2DMipmaps (GLenum      target, GLint       components, GLint       width, GLint       height, GLenum      format, GLenum      type, const void  *data);

这篇关于OpenGL(13)GLU库API的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/709953

相关文章

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

【LabVIEW学习篇 - 21】:DLL与API的调用

文章目录 DLL与API调用DLLAPIDLL的调用 DLL与API调用 LabVIEW虽然已经足够强大,但不同的语言在不同领域都有着自己的优势,为了强强联合,LabVIEW提供了强大的外部程序接口能力,包括DLL、CIN(C语言接口)、ActiveX、.NET、MATLAB等等。通过DLL可以使用户很方便地调用C、C++、C#、VB等编程语言写的程序以及windows自带的大

如何更优雅地对接第三方API

如何更优雅地对接第三方API 本文所有示例完整代码地址:https://github.com/yu-linfeng/BlogRepositories/tree/master/repositories/third 我们在日常开发过程中,有不少场景会对接第三方的API,例如第三方账号登录,第三方服务等等。第三方服务会提供API或者SDK,我依稀记得早些年Maven还没那么广泛使用,通常要对接第三方

Java基础回顾系列-第五天-高级编程之API类库

Java基础回顾系列-第五天-高级编程之API类库 Java基础类库StringBufferStringBuilderStringCharSequence接口AutoCloseable接口RuntimeSystemCleaner对象克隆 数字操作类Math数学计算类Random随机数生成类BigInteger/BigDecimal大数字操作类 日期操作类DateSimpleDateForma

Restful API 原理以及实现

先说说API 再说啥是RESRFUL API之前,咱先说说啥是API吧。API大家应该都知道吧,简称接口嘛。随着现在移动互联网的火爆,手机软件,也就是APP几乎快爆棚了。几乎任何一个网站或者应用都会出一款iOS或者Android APP,相比网页版的体验,APP确实各方面性能要好很多。 那么现在问题来了。比如QQ空间网站,如果我想获取一个用户发的说说列表。 QQ空间网站里面需要这个功能。

京东物流查询|开发者调用API接口实现

快递聚合查询的优势 1、高效整合多种快递信息。2、实时动态更新。3、自动化管理流程。 聚合国内外1500家快递公司的物流信息查询服务,使用API接口查询京东物流的便捷步骤,首先选择专业的数据平台的快递API接口:物流快递查询API接口-单号查询API - 探数数据 以下示例是参考的示例代码: import requestsurl = "http://api.tanshuapi.com/a

WordPress开发中常用的工具或api文档

http://php.net/ http://httpd.apache.org/ https://wordpress.org/ https://cn.wordpress.org/ https://core.svn.wordpress.org/ zh-cn:开发者文档: https://codex.wordpress.org/zh-cn:%E5%BC%80%E5%8F%91%E8%80%

Java后端微服务架构下的API限流策略:Guava RateLimiter

Java后端微服务架构下的API限流策略:Guava RateLimiter 大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿! 在微服务架构中,API限流是保护服务不受过度使用和拒绝服务攻击的重要手段。Guava RateLimiter是Google开源的Java库中的一个组件,提供了简单易用的限流功能。 API限流概述 API限流通过控制请求的速率来防止

13 transition数组的动画使用

划重点 动画:transitiontransition-group :数组动画数组的 添加 / 删除 豆腐粉丝汤 清淡又健康 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><me

【CTF Web】BUUCTF Upload-Labs-Linux Pass-13 Writeup(文件上传+PHP+文件包含漏洞+PNG图片马)

Upload-Labs-Linux 1 点击部署靶机。 简介 upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。 注意 1.每一关没有固定的通关方法,大家不要自限思维! 2.本项目提供的writeup只是起一个参考作用,希望大家可以分享出自己的通关思路