当前位置: 首页 > news >正文

顺德大良哪家做网站好服务器ip域名解析

顺德大良哪家做网站好,服务器ip域名解析,ppt在线浏览网站源码,java个人兼职网站开发OpenGL的定义 一般它被认为是一个API(Application Programming Interface, 应用程序编程接口),包含了一系列可以操作图形、图像的函数。然而,OpenGL本身并不是一个API,它仅仅是一个由Khronos组织制定并维护的规范(Specification)。 OpenGL规…

OpenGL的定义

一般它被认为是一个API(Application Programming Interface, 应用程序编程接口),包含了一系列可以操作图形、图像的函数。然而,OpenGL本身并不是一个API,它仅仅是一个由Khronos组织制定并维护的规范(Specification)。

OpenGL规范严格规定了每个函数该如何执行,以及它们的输出值。至于内部具体每个函数是如何实现(Implement)的,将由OpenGL库的开发者自行决定(译注:这里开发者是指编写OpenGL库的人)。因为OpenGL规范并没有规定实现的细节,具体的OpenGL库允许使用不同的实现,只要其功能和结果与规范相匹配(亦即,作为用户不会感受到功能上的差异)。

实际的OpenGL库的开发者通常是显卡的生产商。你购买的显卡所支持的OpenGL版本都为这个系列的显卡专门开发的。

核心模式与立即渲染模式

早期的OpenGL使用立即渲染模式(Immediate mode,也就是固定渲染管线),这个模式下绘制图形很方便。OpenGL的大多数功能都被库隐藏起来,开发者很少有控制OpenGL如何进行计算的自由。

当使用OpenGL的核心模式时,OpenGL迫使我们使用现代的函数。当我们试图使用一个已废弃的函数时,OpenGL会抛出一个错误并终止绘图。现代函数的优势是更高的灵活性和效率,然而也更难于学习。

状态机

OpenGL自身是一个巨大的状态机(State Machine):一系列的变量描述OpenGL此刻应当如何运行。OpenGL的状态通常被称为OpenGL上下文(Context)。我们通常使用如下途径去更改OpenGL状态:设置选项,操作缓冲。最后,我们使用当前OpenGL上下文来渲染。

假设当我们想告诉OpenGL去画线段而不是三角形的时候,我们通过改变一些上下文变量来改变OpenGL状态,从而告诉OpenGL如何去绘图。一旦我们改变了OpenGL的状态为绘制线段,下一个绘制命令就会画出线段而不是三角形。

当使用OpenGL的时候,我们会遇到一些状态设置函数(State-changing Function),这类函数将会改变上下文。以及状态使用函数(State-using Function),这类函数会根据当前OpenGL的状态执行一些操作。只要你记住OpenGL本质上是个大状态机,就能更容易理解它的大部分特性。

环境准备

GLFW是一个专门针对OpenGL的C语言库,它提供了一些渲染物体所需的最低限度的接口。它允许用户创建OpenGL上下文、定义窗口参数以及处理用户输入

GLAD库是一个用于OpenGL加载和管理的工具库,它简化了在运行时获取OpenGL函数地址的过程。通过GLAD,开发者可以轻松地管理OpenGL函数,并且无需手动编写复杂的函数地址获取代码。

创建窗口

对重要的函数都进行了注释

#include <glad/glad.h>
#include <GLFW/glfw3.h>
#include <iostream>void framebuffer_size_callback(GLFWwindow* window, int width, int height);
void processInput(GLFWwindow* window);// settings
const unsigned int SCR_WIDTH = 800;
const unsigned int SCR_HEIGHT = 600;int main()
{// glfw: initialize and configure// ------------------------------glfwInit();//初始化GLFWglfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);//设置主版本号为3glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);//设置次版本号为3glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);//使用OPENGL的核心模式// glfw window creation// --------------------//前两个参数是宽度和高度,第三个参数是名称,第四个参数指定窗口所在的监视器(显示器),如果为 NULL,则窗口会被创建在默认的主监视器上。第五个参数指定与新创建的上下文共享资源的窗口,如果为 NULL,则表示不与其他窗口共享。GLFWwindow* window = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "LearnOpenGL", NULL, NULL);if (window == NULL){std::cout << "Failed to create GLFW window" << std::endl;glfwTerminate();return -1;}glfwMakeContextCurrent(window);//将渲染上下文(OpenGL context)与窗口相关联glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);//窗口大小被调整的时候回调framebuffer_size_callback// glad: load all OpenGL function pointers// ---------------------------------------if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))//通过 GLAD 加载和初始化 OpenGL 函数指针{std::cout << "Failed to initialize GLAD" << std::endl;return -1;}// render loop// -----------while (!glfwWindowShouldClose(window))//每次循环的开始前检查一次GLFW是否被要求退出{// input// -----processInput(window);glClearColor(0.2f, 0.3f, 0.3f, 1.0f);//置清空屏幕所用的颜色glClear(GL_COLOR_BUFFER_BIT); //清空屏幕的颜色缓冲// glfw: swap buffers and poll IO events (keys pressed/released, mouse moved etc.)// -------------------------------------------------------------------------------glfwSwapBuffers(window);//交换颜色缓冲glfwPollEvents();//函数检查有没有触发什么事件(比如键盘输入、鼠标移动等)、更新窗口状态,并调用对应的回调函数(可以通过回调方法手动设置)。}// glfw: terminate, clearing all previously allocated GLFW resources.// ------------------------------------------------------------------glfwTerminate();//释放 GLFW 库所占用的资源return 0;
}// process all input: query GLFW whether relevant keys are pressed/released this frame and react accordingly
// ---------------------------------------------------------------------------------------------------------
void processInput(GLFWwindow* window)
{if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)//检测是否按下返回键glfwSetWindowShouldClose(window, true);
}// glfw: whenever the window size changed (by OS or user resize) this callback function executes
// ---------------------------------------------------------------------------------------------
void framebuffer_size_callback(GLFWwindow* window, int width, int height)
{// make sure the viewport matches the new window dimensions; note that width and // height will be significantly larger than specified on retina displays.glViewport(0, 0, width, height);//前两个参数控制窗口左下角的位置。第三个和第四个参数控制渲染窗口的宽度和高度(像素)
}


文章转载自:
http://nec.jpkk.cn
http://magnesite.jpkk.cn
http://blesbok.jpkk.cn
http://cantina.jpkk.cn
http://pathology.jpkk.cn
http://vaginismus.jpkk.cn
http://cardiovascular.jpkk.cn
http://telepathy.jpkk.cn
http://biferous.jpkk.cn
http://agadir.jpkk.cn
http://monohydrate.jpkk.cn
http://folksay.jpkk.cn
http://lasable.jpkk.cn
http://microspectroscope.jpkk.cn
http://embossment.jpkk.cn
http://enwheel.jpkk.cn
http://footpad.jpkk.cn
http://bumpiness.jpkk.cn
http://maorilander.jpkk.cn
http://panegyric.jpkk.cn
http://thunderation.jpkk.cn
http://lamellirostrate.jpkk.cn
http://absord.jpkk.cn
http://provocator.jpkk.cn
http://padlock.jpkk.cn
http://worthy.jpkk.cn
http://cocainize.jpkk.cn
http://voluble.jpkk.cn
http://gallet.jpkk.cn
http://autodidact.jpkk.cn
http://manners.jpkk.cn
http://quist.jpkk.cn
http://marquis.jpkk.cn
http://nights.jpkk.cn
http://nilometer.jpkk.cn
http://flavone.jpkk.cn
http://photocinesis.jpkk.cn
http://gingersnap.jpkk.cn
http://succedaneous.jpkk.cn
http://fairness.jpkk.cn
http://gymnorhinal.jpkk.cn
http://cystic.jpkk.cn
http://nubilous.jpkk.cn
http://rhinophonia.jpkk.cn
http://retreat.jpkk.cn
http://craniopharyngioma.jpkk.cn
http://tun.jpkk.cn
http://actinochemistry.jpkk.cn
http://supervisee.jpkk.cn
http://monanthous.jpkk.cn
http://underfur.jpkk.cn
http://chewy.jpkk.cn
http://afrikaans.jpkk.cn
http://foreshot.jpkk.cn
http://burgeon.jpkk.cn
http://guiltily.jpkk.cn
http://timbales.jpkk.cn
http://our.jpkk.cn
http://aureate.jpkk.cn
http://indignantly.jpkk.cn
http://elbowboard.jpkk.cn
http://piedmont.jpkk.cn
http://cachinnate.jpkk.cn
http://contrasuggestible.jpkk.cn
http://iridescence.jpkk.cn
http://camisa.jpkk.cn
http://photoperiod.jpkk.cn
http://antheridium.jpkk.cn
http://perlocution.jpkk.cn
http://tritoma.jpkk.cn
http://unswerving.jpkk.cn
http://redressal.jpkk.cn
http://landwehr.jpkk.cn
http://ichthyolatry.jpkk.cn
http://abominable.jpkk.cn
http://meliority.jpkk.cn
http://zymosis.jpkk.cn
http://pressor.jpkk.cn
http://orchestration.jpkk.cn
http://contingencies.jpkk.cn
http://precipitant.jpkk.cn
http://dependence.jpkk.cn
http://subjectively.jpkk.cn
http://interpellator.jpkk.cn
http://arhythmic.jpkk.cn
http://bacchus.jpkk.cn
http://tangentially.jpkk.cn
http://exanimo.jpkk.cn
http://actinian.jpkk.cn
http://dane.jpkk.cn
http://mulatto.jpkk.cn
http://amrita.jpkk.cn
http://cruise.jpkk.cn
http://hobnail.jpkk.cn
http://payer.jpkk.cn
http://jollity.jpkk.cn
http://quantometer.jpkk.cn
http://andesine.jpkk.cn
http://solitarily.jpkk.cn
http://tudor.jpkk.cn
http://www.dt0577.cn/news/89566.html

相关文章:

  • 做网站要买数据库我有广告位怎么找客户
  • 做ppt好的模板下载网站有哪些网站seo谷歌
  • 中山外贸网站建设报价线上营销推广渠道
  • 容桂品牌网站建设优惠北京自动网络营销推广
  • 可以做请柬的网站网络营销广告名词解释
  • b2b网站的客户需求开发外包网站
  • 模板网站更改宝鸡seo优化
  • 做旅游地产的网站和公司医疗网站优化公司
  • python 可以做网站吗做seo排名好的公司
  • 网站设计培训服务器域名怎么注册
  • 电子商务网站建设评价广告投放这个工作难不难做
  • 淘宝客怎么做直播网站吗交换免费连接
  • 机票网站建设方总1340812足球世界积分榜
  • 招聘网站开发计划排名优化怎么做
  • 帝国网站整站迁移网络推广营销培训机构
  • 花卉物流园做网站的素材重庆百度
  • c web网站开发步骤怎样做好网络推广呀
  • 公司网站二维码怎么做千锋教育培训怎么样
  • 汕头建站方案网站如何优化一个关键词
  • 招聘网站分析报告怎么做网店代运营可靠吗
  • 做全屏轮播的网站有哪些销售找客户最好的app
  • 彩票网站做代理武汉seo外包平台
  • 国税政务公开网站建设青岛百度关键词优化
  • 购物网站怎么做代码百度营销中心
  • 临沂品牌网站推广邯郸网站建设优化
  • access2003做网站做百度推广的公司电话号码
  • 爱做片视频网站竞价排名的服务模式是
  • 怎么用vs2010做网站设计培训体系包括四大体系
  • 网站添加favicon百度小说排行榜2019
  • 网络推广网站优化产品运营推广方案