OpenGL glBegin()函数学习

news2024/9/24 17:17:09

接此,

OpenGL视口学习_bcbobo21cn的博客-CSDN博客

把VC6生成的代码中的材质部分注释掉;然后程序运行起来是如下;

把原先GLCube函数的代码替换为如下;下面代码是绘制线框,没有面;它是给出顶点坐标和顶点序号,然后调用glVertex3fv;

void GLCube(GLfloat x1, GLfloat y1, GLfloat z1, GLfloat x2, GLfloat y2, GLfloat z2)
{
	int i,j;
	//顶点坐标
	static const float vertex_list[][3] = 
	{ 
		-0.5f, -0.5f, -0.5f, 
		0.5f, -0.5f, -0.5f, 
		-0.5f, 0.5f, -0.5f, 
		0.5f, 0.5f, -0.5f, 
		-0.5f, -0.5f, 0.5f, 
		0.5f, -0.5f, 0.5f, 
		-0.5f, 0.5f, 0.5f, 
		0.5f, 0.5f, 0.5f, 
	}; 
	
	//顶点序号  
	static const GLint index_list[][2] = 
	{ 
		{0, 1},    
		{2, 3},    
		{4, 5},    
		{6, 7},    
		{0, 2},    
		{1, 3},    
		{4, 6},    
		{5, 7},
		{0, 4},
		{1, 5},
		{7, 3},
		{2, 6}
	}; 
    
    glBegin(GL_LINES); 
    for(i=0; i<12; ++i) // 12 条线段 
    {
        for(j=0; j<2; ++j) // 每条线段 2个顶点 
        {
            glVertex3fv(vertex_list[index_list[i][j]]);     
        }
    }
    glEnd();
}

 

 

绘制都是在glBegin和glEnd之间进行;

前面绘制面的立方体是glBegin(GL_POLYGON),绘制线框是glBegin(GL_LINES);

下面学习一下glBegin函数; 

glBegin和glEnd函数限定了一组或多组图元的定点定义;

void glBegin(GLenummode)
void glEnd(void)
参数说明:
    一共有N个顶点,n表示从1开始的第n个点。
    mode:创建图元的类型。可以是以下数值
        GL_POINTS:把每一个顶点作为一个点进行处理,顶点n即定义了点n,共绘制N个点
        GL_LINES:把每一个顶点作为一个独立的线段,顶点2n-1和2n之间的是第n条线段,总共绘制N/2条线段
        GL_LINE_STRIP:绘制从第一个顶点到最后一个顶点依次相连的一组线段,第n和n+1个顶点定义了第n线段,总共绘制 N-1条线段
        GL_LINE_LOOP:绘制从第一个顶点到最后一个顶点依次相连的一组线段,然后最后一个顶点和第一个顶点相连,第n和n+1个顶点定义了线段n,总共绘制N条线段
        GL_TRIANGLES:把每个顶点作为一个独立的三角形,顶点3n-2、3n-1和3n定义了第n个三角形,总共绘制N/3个三角形
        GL_TRIANGLE_STRIP:绘制一组相连的三角形,对于奇数n,顶点n、n+1和n+2定义了第n个三角形;对于偶数n,顶点n+1、n和n+2定义了第n个三角形,总共绘制N-2个三角形
        GL_TRIANGLE_FAN:绘制一组相连的三角形,三角形是由第一个顶点及其后给定的顶点确定,顶点1、n+1和n+2定义了第n个三角形,总共N-2个三角形
        GL_QUADS:绘制由四个顶点组成的一组单独的四边形。顶点4n-3、4n-2、4n-1和4n定义了第n个四边形。总共绘制N/4个四边形
        GL_QUAD_STRIP:绘制一组相连的四边形。每个四边形是由一对顶点及其后给定的一对顶点共同确定的。顶点2n-1、2n、2n+2和2n+1定义了第n个四边形,总共绘制N/2-1个四边形
        GL_POLYGON:绘制一个凸多边形。顶点1到n定义了这个多边形。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/696658.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

特征工程知识点总结

非系统且不严谨的总结 一、数据清洗 数据清洗部分主要包括&#xff1a;缺失值处理、重复值处理、异常值处理。前两者简单&#xff0c;要么直接删掉&#xff0c;要么按照我们心仪的规则进行插值填充。而对于异常值&#xff0c;也可以直接删掉&#xff0c;但是并不是最好的做法。…

烂sql导致clickhouse集群memory_tracking直线飙升触发熔断

版 本 v e r s i o n 1 9 . 1 7 . 4 . 1 1 c l i c k h o u s e 集 群 &#xff0c; 主 要 存 日 志 数 据 与 监 控 数 据 。 架 构 为 4 台 主 机 1 2 个 实 例 数 &#xff0c; 数 据 为 单 副 本 。 近 日 &#xff0c; 该 c l i c k h o u s e 集 群 有 一 台 物…

JavaWeb之jsp技术的个人理解

一.介绍 是什么&#xff1a;ava Server Pages&#xff1a; java服务器端页面&#xff08;可以理解为&#xff1a;一个特殊的页面&#xff0c;其中既可以指定定义html标签&#xff0c;又可以定义java代码&#xff09;&#xff0c;用于简化书写&#xff01;&#xff01;&#xf…

Elasticsearch 安装使用

下载安装 elasticsearch下载链接 运行&#xff1a;bin\elasticsearch.bat 设置密码&#xff1a;.\bin\elasticsearch-setup-passwords interactive 这边设置密码遇到一个坑 PS G:\elasticsearch-8.8.1> .\bin\elasticsearch-setup-passwords interactiveFailed to authe…

arcpy对图层文件的属性表实现查询、插入、更新、删除

前言 对属性表进行增删改查要用到插入游标、删除游标、更新游标、查询游标。 官方文档地址如下&#xff1a;https://resources.arcgis.com/zh-cn/help/main/10.2/ 授人以鱼不如授人以渔&#xff01;&#xff01; 一、查询游标SearchCursor SearchCursor 函数用于在要素类或…

代码复现:基于竞争学习的灰狼优化算法Clb-GWO

代码复现&#xff1a;基于竞争学习的灰狼优化算法Clb-GWO&#xff0c;可用于算法对比 参考文献&#xff1a;Aala Kalananda V K R, Komanapalli V L N. A competitive learning-based Grey wolf Optimizer for engineering problems and its application to multi-layer perce…

MeterSphere(基于JMeter)常用断言汇总

JSONPath方式断言 {"success": true,"errCode": null,"errMessage": null,"statDate":"6月28日","data": [{"name": "人口","value": "1","unit": "万人…

数字孪生与 GIS 融合为环保领域带来新的变化

在当今日益关注环境保护和可持续发展的时代&#xff0c;数字孪生和 GIS 的融合为环境保护领域带来了巨大的变化。数字孪生是一种以 3D 模型为基础的仿真技术&#xff0c;能够对真实世界进行精确的建模和模拟&#xff0c;而 GIS 则是一种用于收集、管理、分析和可视化地理数据的…

【Uni-app 引入海康h5player并接入ws视频流】

uni-app 海康h5player接入ws视频流 内容简介 采用uni-app中的renderjs 引入海康H5 SDK 后端接入海康综合安防平台的开放API获取预览流 海康H5 SDK 下载地址 接入原因 因在移动端接入不管是hls flv rtsp rtmp流的播放稳定性和速度均很慢&#xff0c;特采用ws直连流来播放&#…

REVIT技巧|一面接一面,叠层墙就是这样堆出来的?

​Revit中有3种墙族&#xff1a;基本墙、幕墙和叠层墙。幕墙定义为由网格和嵌板组成的系统。 基本墙是由从外部到内部的材质层组成的墙。基本墙自底部到顶部的厚度都相同。 叠层墙由相互堆叠的基本墙组成&#xff0c;可以设计具有自底部到顶部厚度不同的墙。 今天&#xff0c…

1.4 MyBatis数据库逆向生成工具

步骤1: mybatis-generator工程 步骤2&#xff1a;修改generatorConfig.xml内容 1.通用mapper所在目录 2.数据库链接 3.对应生成的pojo所在包 4.对应生成的mapper所在目录 5.配置mapper对应的java映射 6.数据库表 具体内容&#xff1a;<!-- 通用mapper所在目录 --> &l…

记录两个不同的域名使用同一个微应用遇到的坑(micro-app)

由于公司的项目越来越多&#xff0c;很多的系统&#xff0c;也有很多相似的模块&#xff0c;为了解决重复造轮子&#xff0c;降低开发维护成本&#xff0c;故将这些抽出来单独作为微应用。经过调研&#xff0c;发现某东出品的micro-app比较吻合。使用过程省略。 在多个项目&am…

Grafana 配置告警 配置 dubbo windows_exporter 报告页面图 其他公共报告可参考相近

目录 安装部署 官网下载 配置中文 启动 访问 账户密码 界面效果 图表操作 新建添加仪表 添加 Prometheus 数据源 导入已有报告示例 下载 windows_exporter Grafana 的图表模板 node_exporter 中文版&#xff1a;windows_exporter for Prometheus Dashboard CN v2…

2023年全网最全接口自动化测试框架搭建,没有之一

一、原理及特点 参数放在XML文件中进行管理 用httpClient简单封装一个httpUtils工具类 测试用例管理使用了testNg管理&#xff0c;使用了TestNG参数化测试&#xff0c;通过xml文件来执行case。 测试报告这里用到第三方的包ReportNG 项目组织用Maven 二、准备 使用工具&am…

期货和现货白银的区别

白银期货和现货白银既有区别&#xff0c;也有联系&#xff0c;它们二者都是以银价跟跟踪对象的保证金交易品种&#xff0c;因此都具有一定的杠杆效应&#xff0c;都可以双向操作&#xff0c;但是它们在交易制度、时间、杠杆水平等诸多方面&#xff0c;都存在明显的区别。 投资者…

为什么你总学不会编程?到底差什么?

为什么你总学不会编程&#xff1f;到底差什么&#xff1f; 笔者看到太多太多的人花上钱、耗费一两年的时间都学不会编程&#xff0c;甚至一门C语言都反反复复学不完、学不会&#xff0c;游走在大门边缘&#xff0c;总是入不了门&#xff0c;到底是什么因为什么&#xff1f; 因…

020、数据库管理之数据导出工具(Dumpling)

Dumpling dumpling详解dumpling介绍dumpling架构与特点dumpling 适用场景dumpling的部署dumpling 所需权限dumpling 导出SQL文件dumpling 导出csv文件对导出数据进行筛选导出数据的格式导出数据的一致性dumpling 性能优化 实验导出TiDB 数据库中的单张表和单个库导出mysql数据库…

tomcat接入skywalking

tomcat接入skywalking 一、说明二、步骤2.1 准备java-agent包2.2 tomcat部署2.2.1 下载2.2.2 tomcat修改catalina.sh文件2.2.3 tomcat修改启动端口2.2.4 启动tomcat 三、验证四、问题排查4.1 tomcat的启动日志 一、说明 服务器中已经运行着skywalking&#xff0c;准备在同一台…

【Jmeter教程】_设置请求的参数

目录 一、Jmeter传参 二、区分参数格式 在做接口测试时&#xff0c;发送请求的参数有两种格式&#xff0c;一种是Parameters&#xff0c;一种是JSON 一、Jmeter传参 Jmeter 传Parameters格式的参数 Jmeter 传JSON格式的参数 二、区分参数格式 在不清楚参数到底是何种格式时…