OpenGL如何基于glfw库 进行 点线面 已解决

       

         GLFW是现在较流行、使用广泛的OpenGL的界面库,而glut库已经比较老了。GLEW是和管理OpenGL函数指针有关的库,因为OpenGL只是一个标准/规范,具体的实现是由驱动开发商针对特定显卡实现的。由于OpenGL驱动版本众多,它大多数函数的位置都无法在编译时确定下来,需要在运行时查询,而GLEW可以解决这些问题。下面就来看下OpenGL是如何基于glfw库实现画点、画线、画三角的。

1、glVertex函数

2、坐标系

代码如下:

#include <GLFW/glfw3.h>
void drawPoint()
{/* Draw a point */glClearColor (0.0, 0.0, 0.0, 0.0); glClear(GL_COLOR_BUFFER_BIT);glPointSize(2.0f);glBegin(GL_POINTS);glColor3f(1.0, 0.0, 0.0);    // RedglVertex2f(0.0f,0.0f);glVertex2f(0.5f,0.8f);glEnd();
}
void drawLint()
{glClearColor (0.0, 0.0, 0.0, 0.0);glClear (GL_COLOR_BUFFER_BIT);glLineWidth(2);//设置线段宽度glBegin(GL_LINES);glColor3f(1.0,0.0,0.0);glVertex2f(0.8,1); //定点坐标范围glVertex2f(0,-1);glEnd();
}
void drawTriangle()
{glClearColor (0.0, 0.0, 0.0, 0.0);glClear (GL_COLOR_BUFFER_BIT);glBegin(GL_TRIANGLES);glColor3f(1.0, 0.0, 0.0);    // RedglVertex3f(0.0, 1.0, 0.0);glColor3f(0.0, 1.0, 0.0);    // GreenglVertex3f(-1.0, -1.0, 0.0);glColor3f(0.0, 0.0, 1.0);    // BlueglVertex3f(1.0, -1.0, 0.0);glEnd();
}
int main(void)
{GLFWwindow* window;/* Initialize the library */if (!glfwInit())return -1;/* Create a windowed mode window and its OpenGL context */window = glfwCreateWindow(480, 320, "Hello World", NULL, NULL);if (!window){glfwTerminate();return -1;}/* Make the window's context current */glfwMakeContextCurrent(window);/* Loop until the user closes the window */while (!glfwWindowShouldClose(window)){/*your draw*/// drawPoint();// drawLint();drawTriangle();/* Swap front and back buffers */glfwSwapBuffers(window);/* Poll for and process events */glfwPollEvents();}glfwTerminate();return 0;
}

运行效果

        

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

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

相关文章

内网DNS隐蔽隧道搭建之iodine工具

iodine iodine是基于C语言开发的&#xff0c;分为服务端和客户端。iodine支持转发模式和中继模式。其原理是&#xff1a;通过TAP虚拟网卡&#xff0c;在服务端建立一个局域网&#xff1b;在客户端&#xff0c;通过TAP建立一个虚拟网卡&#xff1b;两者通过DNS隧道连接&#xf…

解析消费全返---看如何使用模式探索餐饮业新航标。

每天五分钟讲解一个商业模式&#xff0c;大家好我是模式策划啊浩。 亲爱的餐饮业朋友们&#xff0c;今天我想和大家分享一个话题&#xff0c;那就是消费增值模式在餐饮行业的应用。近年来&#xff0c;随着消费者需求的不断升级和市场竞争的加剧&#xff0c;消费增值模式为餐饮…

uniapp中uview组件库丰富的Slider 滑动选择器的使用方法

目录 #平台差异说明 #基本使用 #设置最大和最小值 #设置步进值 #禁用状态 #自定义按钮的内容和样式 #自定义滑动选择器整体的样式 #此页面源代码地址 #API #Props #Slider Events 该组件一般用于表单中&#xff0c;手动选择一个区间范围的场景。 说明 该组件在H5&…

IntelliJ IDEA 如何配置git

在 IntelliJ IDEA 中配置 Git 的步骤如下&#xff1a; 打开 IntelliJ IDEA。找到 File–>Setting–>Version Control–>Git–>Path to Git executable。在 Git 的安装路径下找到 cmd 文件夹下的 git.exe&#xff0c;到此 Git 配置已完成。

服务器为什么大多用 Linux?

服务器为什么大多用 Linux&#xff1f; 在开始前我有一些资料&#xff0c;是我根据自己从业十年经验&#xff0c;熬夜搞了几个通宵&#xff0c;精心整理了一份「Linux的资料从专业入门到高级教程工具包」&#xff0c;点个关注&#xff0c;全部无偿共享给大家&#xff01;&#…

Oracle的日期加减

一、直接加减数字 select sysdate 当前时间,sysdate 1 加一天,sysdate - 1 减一天,sysdate (1 / 24) 加一小时,sysdate (1 / 24 / 60) 加一分钟,sysdate (1 / 24 / 60 / 60) 加一秒钟 from dual;二、add_months…

如何制作可预约的上门维修服务小程序?

上门维修服务已经成为人们日常生活中不可或缺的一部分。为了满足这一需求&#xff0c;我们学习如何无经验自己制作上门维修服务小程序。 首先&#xff0c;打开乔拓云-门店系统的后台&#xff0c;可以看到有很多各行各业的模版。这些模版涵盖了各种行业&#xff0c;包括家电维修…

Spring Security 6.x 系列(14)—— 会话管理之源码分析

一、前言 在上篇 Spring Security 6.x 系列(13)—— 会话管理之会话概念及常用配置 Spring Security 6.x 系列(14)—— 会话管理之会话固定攻击防护及Session共享 中了清晰了协议和会话的概念、对 Spring Security 中的常用会话配置进行了说明,并了解会话固定攻击防护…

vuex基础用法 与 辅助函数使用

效果图 index.js文件 import Vue from "vue"; import Vuex from vuexVue.use(Vuex)export default new Vuex.Store({state: {shopsList: [{goodsName: "手机1", //商品名goodsAmount: 0, //购买的商品数量goodsPrice: 100, //单个商品价格totalPrice: 0,i…

国信集团通过ZStack cloud构建云基础设施

为有效推进集团信息化发展的进程&#xff0c;国信集团选择云轴科技ZStack Cloud云平台整合现有资源&#xff0c;构建统一的资源池。ZStack Cloud云平台具备先进性和可扩展性&#xff0c;充分满足了国信集团现有及未来的业务需求&#xff1b;同时&#xff0c;国信集团将在两中心…

数通基础知识总结

1. 基础概念 1.1. 通信基本原理 通信基本原理涉及信息的生成、编码、传输和解码的过程。在实际应用中&#xff0c;例如电话通信&#xff0c;信息通过话筒转换成模拟信号&#xff0c;经过传输线路传递到接收端&#xff0c;再由耳机解码还原为可理解的信息。 1.2. 信道和信号 …

Required request body is missing报错及解决

今天&#xff0c;我在尝试调用后端接口展示文章数据时遇到了错误&#xff0c;错误原因是请求体缺失&#xff0c; 但是我明明传了参数 然后我找了很久错误原因&#xff0c;发现在之前跟着写的一个差不多的功能时&#xff0c;请求方式是post 而我写的确是get 将get改为post后&…

PHP 基础编程 2

文章目录 时间函数dategetdatetime 使用数组实现登录注册和修改密码简单数组增加元素方法修改元素方法删除元素方法 具体实现方法数组序列化数组写入文件判断元素是否在关联数组中&#xff08;登录功能实现&#xff09;实现注册功能实现修改admin用户密码功能 时间函数 时区&am…

docker容器的常见命令

docker 及docker-compose network概念及操作详解 ## network相关的操作# 列出所有当前主机上或Swarm集群上的网络docker network ls#查看网络详情docker network inspect network名称# 清除未使用的docker网络docker network prune -f# 创建网络ocker network create -d brid…

蓝牙简学(二)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、服务和特性二、数据收发三、UUID 一、服务和特性 service、characteristic 下面的图是蓝牙协议的整体架构&#xff0c; 1.物理层&#xff1a;负责无线电波的收…

x-cmd pkg | procs - ps 命令的现代化替代品

目录 简介首次用户功能特点类似工具进一步阅读 简介 procs 是用 Rust 编写的 ps 替代品&#xff0c;用于显示有关任务进程的信息 首次用户 使用 x procs 即可自动下载并使用 在终端运行 eval "$(curl https://get.x-cmd.com)" 即可完成 x 命令安装, 详情参考 x-cmd…

python学完之后可以做什么,python学完可以做什么

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;python学完可以做哪些工作&#xff0c;python学完之后可以做什么&#xff0c;今天让我们一起来看看吧&#xff01; Python是一种全栈的开发语言&#xff0c;你如果能学好Python&#xff0c;前端&#xff0c;后端&#x…

Spring实现IoC:依赖注入/构造注入

● 控制反转&#xff0c;反转的是什么&#xff1f; ○ 将对象的创建权利交出去&#xff0c;交给第三方容器负责。 ○ 将对象和对象之间关系的维护权交出去&#xff0c;交给第三方容器负责。 ● 控制反转这种思想如何实现呢&#xff1f; ○ DI&#xff08;Dependency Injection&…

Linux telnet命令

Linux telnet命令用于远端登入。 执行telnet指令开启终端机阶段作业&#xff0c;并登入远端主机。 语法 telnet [-8acdEfFKLrx][-b<主机别名>][-e<脱离字符>][-k<域名>][-l<用户名称>][-n<记录文件>][-S<服务类型>][-X<认证形态>…

Eureka工作原理

Eureka的工作原理 Eureka是Netflix开发的一个服务发现框架&#xff0c;它主要用于AWS云环境中&#xff0c;用于构建可伸缩的微服务架构。Eureka主要由两个组件构成&#xff1a;Eureka Server和Eureka Client。下面详细介绍它们的工作原理。 Eureka Server Eureka Server提供服…