当前位置: 首页 > 编程日记 > 正文

openGL学习笔记(1)——常用方法原型解释

1、初始化,设置背景色

void glClear(int mask)    清除缓存

实參含义:GL10.GL_COLOR_BUFFER_BIT 清除颜色缓存

GL10.GL_DEPTH_BUFFER_BIT  清除深度缓存

希望同时清除多个缓存,将实參用或(|)连接即可

void glClearColor(float red,float green,float blue,float alpha)    设置背景色

2、视点变换

视点变换设置视点的位置和方向。视点默认位于坐标系原点,指向负z轴。

3、模型变换(几何变换)

模型变换在世界坐标系进行,物体模型原点默认在坐标系中心。有三个变换

平移

void glTranslatef(float x,float y,float z)

实參为沿着x,y,z轴向右平移的距离

旋转

void glRotatef(float angle,float x,float y,float z)

以原点和点(x,y,z)构成的直线为轴,逆时针旋转angle大小的角度

缩放

void glScalef(float x,float y,float z)

实參为三轴上的缩放因子

4、投影变换

投影变换的目的是创建一个视景体,把视景体之外的场景裁剪掉。投影变换有两种,透视投影(perspective projection)和正交投影(orthographic projection)。

透视投影

void glFrustumf(float left, float right, float bottom, float top, float zNear, float zFar)

正交投影

void glOrthof(float left, float right, float bottom, float top, float zNear, float zFar)

5、视口变换

视口平面是视景体内的物体投影到的二维平面,视口变换就是调整视口大小。

void glViewport(int x,int y,int width,int height)

变换后的视口是以坐标(x,y)为左下顶点,宽为width,高为height的矩形

6、裁剪变换

7、矩阵栈操作

openGL的变换矩阵为4*4矩阵

设置当前矩阵

void glLoadMatrixf(float[] m,int offset) 或者 void glLoadMatrixf(FloatBuffer m)    设置当前变换矩阵

void glLoadIdentity()  设置当前矩阵为单位矩阵

压入、弹出矩阵

void glPushMatrix()  依次压入当前所有矩阵

void glPopMatrix()    弹出栈顶矩阵

两个方法联合操作可以保留下次变换之前的矩阵状态。

8、打开和关闭裁剪等功能

打开

void glEnable(int cap)

实參含义:GL_CULL_FACE  打开背面剪裁

GL_DEPTH_TEST 打开深度测试

GL_DITHER        打开抗抖动

关闭

void glDisable(int cap)

9、设置着色模型

void glShadeModel(int mode)

实參含义:GL_SMOOTH   平滑着色,根据三个顶点的颜色进行渐变着色,相邻两点之间的颜色平滑过渡

GL_FLAT        不平滑着色,使用最后一个顶点的颜色进行填充

10、设置旋绕方向

openGL默认多边形顶点逆时针排列为正面

void glFrontFace(int mode)

实參含义:GL_CW   顺时针为正面

GL_CCW 逆时针为正面

11、设置矩阵模式

void  glMatrixMode(int mode)

实參含义:GL_MODELVIEW  设置为模型(几何)变换矩阵

GL_PROJECTION 设置为投影变换矩阵

12、绘图

openGL绘图需要三个数组:顶点坐标数组,顶点颜色数组和顶点索引数组(索引可以不要)

启用和禁用顶点数组

void glEnableClientState(int array)     启用

实參含义:GL_VERTEX_ARRAY   启用顶点坐标数组

GL_COLOR_ARRAY   启用顶点颜色数组

void glDisableClientState(int array)  禁用

为画笔指定顶点坐标数据

void glVertexPointer(int size,int type,int stride,Buffer pointer)

形參含义:size为坐标维数(一般等于3),type为坐标值的类型(GL_FIXED代表int型,GL_FLOAT代表float型),stride为步长(连续顶点之间的间隔),pointer为顶点数据的buffer

为画笔指定颜色顶点坐标数据

void glColorPointer(int size,int type,int stride,Buffer pointer)

形參含义:同顶点指定方法,size一般等于4

索引法绘图

void glDrawElements(int mode,int count,int type,Buffer indices)

形參含义:mode代表绘图方式,常见的方式有:GL_POINTS(画点),GL_LINES(每两点画一线段),GL_LINE_STRIP(按顺序相邻两点画一线段),GL_LINE_LOOP(按顺序相邻            顶点画一线段,末尾顶点与第一个顶点再画一线段),GL_TRIANGLES(每三个顶点画一三角形),GL_TRIANGLE_STRIP(按顶点顺序,每个顶点和它后面相邻的两个顶点画一三角形),GL_TRIANGLE_FAN(第一个顶点为共用顶点,其之后的顶点按照顺序每相邻两个和它构成一个三角形);

count代表索引数组的长度(不同于顶点个数)

type代表索引数据类型,如:GL_UNSIGNED_BYTE,GL_UNSIGNED_SHORT

indices代表索引数据的buffer

非索引法绘图

void glDrawArrays(int mode,int first,int count)

形參含义:mode代表绘图方式

first代表第一个顶点的编号

count代表顶点个数

转载于:https://www.cnblogs.com/yapollo/p/3537847.html

相关文章:

让VBCommenter支持自定义用户名

在使用VBCommenter生成XML格式的注释时&#xff0c;发现在<history></history>标签内的用户名是登陆系统的用户名&#xff0c;而我们的用户名一般是一些简称或其它英文名等&#xff0c;这样在注释中想记录开发人员的真实姓名就必须手工修改&#xff0c;颇不方便。是…

模拟器抓取https方法

说明&#xff1a;为了解决安卓手线上不能抓取https请求&#xff0c;以下整理通过模拟器抓取https请求方法如下&#xff1a;前置条件&#xff1a;安卓模拟器1、夜神抓包工具&#xff1a;fiddler、charles不要安装证书 第一步安装模拟器 可以按照夜神模拟器步骤省略 第二步de.rob…

hung-yi lee_p15_机器学习深层网络比浅层网络好在哪

文章目录疑问-为什么要那么多层简单解释以语音识别为例语音识别基础GMM的方法的缺陷深度学习的高明之处回到问题-为什么一层能解决还要多层从电子工程(EE)角度解释一个电路的例子日常角度解释剪窗花Deep Learning的优点适用于参数少的情况End-to-end Learning面临复杂问题疑问-…

从WEB SERVICE 上返回大数据量的DATASET

前段时间在做一个项目的时候,遇到了要通过WEB SERVICE从服务器上返回数据量比较大的DATASET,当然&#xff0c;除了显示在页面上以外&#xff0c;有可能还要用这些数据在客户端进行其它操作。查遍了网站的文章,问了一些朋友,也找了一些解决方法. 众所周知,如果不用其它方…

ORACLE解决登陆em状态暂挂方法

1、找到oracle安装目录中db_1/计算机名_orcl/sysman/config/emd.properties &#xff0c; 用记事本打开emd.properties&#xff0c;在emd.properties文件 最后一行 的agentTZRegionGMT改为 agentTZRegionAsia/Chungking2、在dos 窗口输入 set oracle_sidorcl emctl stop dbcon…

VBA注释临时

Sub shishi() 按ABCDE为多选题定义答案; A&#xff0e;沙利度胺 B&#xff0e;异烟肼 C&#xff0e;利福平 d.氯法齐明 E.氨苯砜 46&#xff0e;各型麻风病的首选药物为(D) A&#xff0e;沙利度胺 B&#xff0e;异烟肼 C&#xff0e;利福平 d.氯法齐明 E.氨苯砜 45&#xf…

hung-yi lee_p13_反向传播

文章目录背景链式法则计算思路梯度计算过程/反向传播总结背景 回顾神经网络中计算梯度&#xff0c;更新梯度的过程 这里面的问题是&#xff0c;梯度是一个上百万维的向量&#xff0c;计算出来并非易事 这就引出了反向传播 可以说反向传播是梯度下降在神经网络中的实现。 链式…

介绍两个非常好用的Javascript内存泄漏检测工具

内存泄漏对开发者来说一般很难检测因为它们是由一些大量代码中的意外的错误引起的&#xff0c;但它在系统内存不足前并不影响程序的功能。这就是为什么会有人在很长时间的测试期中收集应用程序性能指标来测试性能。 最简单的检测内存泄漏的方式是用任务管理器检查内存使用情况。…

全局化和本地化

区域性En 英语en-CA 加拿大英语af-ZA 南非荷兰语eu 巴斯克语kn-IN 埃纳德语 印度tr 土耳其语Cy-uz-UZ 乌兹别克语 西里尔字母表Lt-uz-UZ 乌兹别克语 拉丁文字母表zh-CHT 繁体中文zh-CHS 简体中文设置当前区域性System.Threading.Thread.CurrentThread.CurrentCulture new Sys…

lvm讲解和磁盘故障案例

一&#xff1a;lvm讲解1.准备磁盘分区fdisk /deb/sdbn创建三个新分区&#xff0c;分别为1Gt改变分区类型为8e2.pvcreate /dev/sdb1yum install -y lvm [rootcentos7-1 ~]# yum install -y lvm 已加载插件&#xff1a;fastestmirror base …

hung-yi lee_p17_卷积神经网络

文章目录背景&#xff1a;卷积层池化层摊平KerasCNN学到了什么Deep DreamDeep Style怎么把CNN用在下围棋上为什么可以将CNN用于下围棋CNN更多应用背景&#xff1a; DNN拿掉一些参数就成CNN 为什么可以这样做 每一个神经元只需要图中的一部分就可以识别出想要的模式 更小的区域…

抓住青春的尾巴再愤青一把

这是今天google大神查到的&#xff1a;一、CAPCOM的《大神》&#xff0c;PS2专属ACT游戏&#xff0c;以三大神之一的日照处天子为原型&#xff0c;动作爽快华丽&#xff0c;是我期待很久的作品&#xff0c;预计今冬发售。 ... 并不是说这个水墨3D是大宇搞出来的DD&#xff0c;3…

the folder is already a source folder.

在新建的maven项目中&#xff0c;新建src/main/java时&#xff0c;提示the folder is already a source folder. 解决办法&#xff1a;右键工程&#xff0c;build path--configure build path--source&#xff0c;删除src/mian/java&#xff0c;再建src/main/java时即可。转载于…

selenium webdriver - 结束进程

1 import org.openqa.selenium.WebDriver;2 import org.openqa.selenium.firefox.FirefoxDriver;3 import org.openqa.selenium.os.WindowsUtils;4 /*5 * 结束进程6 */7 public class KillProcess {8 9 public static void main(String[] args) { 10 //结束进程 …

白盒测试的3中主要方法(cont.)

文章目录白盒测试简介逻辑覆盖测试法SCDCCCCDCMCCMCDC基本路径测试法BPC测试的四个步骤循环路径覆盖法白盒测试简介 静态白盒测试也称为结构化分析。 动态白盒测试又称为结构化测试。 以下所说的应该均属于动态白盒测试。 逻辑覆盖测试法 SC sentence coverage 语句覆盖 设…

CRichEdit小记

使用前要AfxInitRichEdit2(); 修改背景颜色和字体颜色 CRichEditCtrl* p(CRichEditCtrl*)GetDlgItem(IDC_RICHEDIT21);CHARFORMAT2 cf;memset((char*)&cf,0,sizeof(cf));COLORREF color;color RGB(0,255,0);cf.dwMask CFM_COLOR;cf.crTextColor color; //The text color…

学习3dmax(四)

今天没有怎么做东西&#xff0c;是再看一些理论的东西。这个是再网上看到的&#xff0c;虽然说的是如何学习3dmax&#xff0c;但是我个人认为学习任何一种技术都应该如此。1. 把MAX当成一门新的课程学习&#xff08;和MAYA没啥关系&#xff01;真的。&#xff09;&…

ES6深拷贝与浅拷贝

小感在前 React学习与开发过程要经历一个相当长的准备阶段&#xff0c;此前看阮一峰老师的文章中&#xff0c;他就特别提到这一点。但是&#xff0c;由于React框架或者说是一种优秀的前端架构实在太诱人&#xff0c;所以&#xff0c;掌握这项技术所涉及的技术栈过程中经历的任何…

hung-yi lee_p22_无监督学习:词嵌入

文章目录原视频地址&#xff1a;添加链接描述输入是一个词 输出是一个向量 整个过程无监督 用来训练的是一堆文章 精神&#xff1a; 根据一个词汇的上下文来理解它 具体&#xff1a; 1.count based 两个词经常一起出现&#xff0c;认为它们是相似的 2.prediction-based 给神经…

用vs2010打开使用vs2013升级后的WP工程

项目在win7vs2010的环境中建立的&#xff0c;后来在win8.1vs2013的环境下修改和完善&#xff1a; 但是所有功能实现后发现wp7项目在使用vs2013打开后因为单向升级的原因&#xff0c;项目只能被编译为wp8项目&#xff08;win8.1vs2013无法安装wp7的sdk&#xff0c;提示不兼容&am…

神州6号发射成功了--庆祝一下

转载于:https://www.cnblogs.com/ccBoy/archive/2005/10/12/253268.html

android保持服务不休眠(持续运行)以及唤醒屏幕的方法

假设有这样一个应用场景&#xff0c;一个服务一直在默默的工作&#xff08;比如即时地获取服务器的消息&#xff09;&#xff0c;即使在屏幕已经因为长时间无操作而关闭&#xff0c;或者用户按了电源键让屏幕关闭&#xff0c;手机进入休眠状态&#xff0c;他必须依然在工作中。…

三类常见软件质量(Quality Attribute)属性的通俗解释

外部质量 用户关心 正确性&#xff0c;最最基本的质量属性&#xff0c;对应功能需求&#xff0c;其他QA多对应非功能需求。健壮性&#xff0c;在异常情况下正常运行的能力。 包含容错能力和恢复能力。恢复没有容错健壮。可靠性&#xff0c;用平均无bug运行时间与平均bug修复时…

winform动态的文字效果

效果图如下 private void Form1_Load(object sender, EventArgs e){Graphics Car_Paint panel1.CreateGraphics();//实例化绘图对象string Car_Str "青岛**软件公司";//定义要绘制的动态文字Character character new Character();//实例化自定义类对象character.D…

使用Mycat构建MySQL读写分离、主从复制、主从高可用

数据库读写分离对于大型系统或者访问量很高的互联网应用来说&#xff0c;是必不可少的一个重要功能。 从数据库的角度来说&#xff0c;对于大多数应用来说&#xff0c;从集中到分布&#xff0c;最基本的一个需求不是数据存储的瓶颈&#xff0c;而是在于计算的瓶颈&#xff0c;…

SharePoint的Reporting Service Viewer Web Part

今天本来打算做一个专门用于Reporting Service报表浏览的SharePoint web part&#xff0c;记得在Reporting Service 2000下有一个viewer的Sample&#xff0c;就想找来参考一下&#xff0c;谁知在C:\Program Files\Microsoft SQL Server\90\Tools\Reporting Services\SharePoint…

7个面向对象常用原则的中英文名、别名、定义及显著特点

单一职责原则 英文名&#xff1a;Single Responsibility Principle(SRP) 别名&#xff1a;无 定义1&#xff1a;一个对象应该只包含单一的职责&#xff0c;并且该职责被完整地封装在一个类中 定义2&#xff1a;就一个类而言&#xff0c;应该仅有一个引起它变化的原因 开闭原则…

常见的“公共标志和说明”英文表达

1、Business Hours 营业时间  2、Office Hours 办公时间  3、Entrance 入口  4、Exit 出口  5、Push 推  6、Pull 拉  7、Shut 此路不通  8、On 打开 ( 放)  9、Off 关  10、Open 营业  11、Pause 暂停  12、Stop 关闭  13、Closed 下班  14、Menu 菜…

【T-SQL】基础——表别名

Som有时候我们需要为表设置别名&#xff0c;这样就可以方便的修改表。 如果在SSMS中&#xff0c;可以点击 Query-> SQL CMD mode --Set Alisa for the table:setvar tablename "[RetailDataWarehouse].[dbo].[FactUnit]" Select ExternalOrderId,COUNT(DISTINCT(R…

数据挖掘的实现流程

文章目录1.数据、信息与知识2.数据挖掘实现流程概览图3.数据准备(step 1)4.数据挖掘(step 2)5.模型的评估解释(step 3)6.知识运用(step 4)7.小结1.数据、信息与知识 2.数据挖掘实现流程概览图 这里提供两张图&#xff0c;以下讲解基于第一张图。 3.数据准备(step 1) Knowl…