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

最新创建的网站搭建网站的平台有哪些

最新创建的网站,搭建网站的平台有哪些,优质的网站自助建站,google首页OpenGL的定义 一般它被认为是一个API(Application Programming Interface, 应用程序编程接口)#xff0c;包含了一系列可以操作图形、图像的函数。然而#xff0c;OpenGL本身并不是一个API#xff0c;它仅仅是一个由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 iostreamvoid 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://www.pierceye.com/news/613373/

相关文章:

  • 建站优化易下拉系统163邮箱登录注册
  • c 做网站电子商务平台中搜索词拆解包括
  • 腾讯云10g数字盘做网站够么四川省建设人才网
  • 批量 网站标题中海园林建设有限公司网站
  • 鲜花网站数据库建设免费律师咨询
  • 团队网站建设哪家便宜制作公司网站流程
  • 青龙桥网站建设企业网页是什么
  • 上海网站建设备案号怎么恢复法律咨询网站开发
  • 烟台做网站价格动力网站建设
  • 北戴河网站建设墨刀制作网页教程
  • 成都网站设计开发做得好微信商城怎么开发
  • 江西省城乡建设培训网-官方网站上海建设集团有限公司
  • 凡科网站设计模板grimhelm wordpress
  • 自己做的网站不备案行吗建筑工程集团有限公司
  • 网站初期 权重怎么做彩票类网站开发
  • 南通网站定制公司服务器网站建设维护合同
  • 亳州做商标网站的公司免费的网站模板
  • 西南城乡建设部网站首页python3做网站教程
  • 网站首页设计欣赏个人电影网站建设
  • 导航网站建设怎么给网站图片加alt
  • 备案成功后怎么建设网站宠物喂养网页设计模板以及代码
  • 东莞哪家网站建设比较好wordpress更改语言设置
  • 如何找做网站的客户wordpress适合视频网站吗
  • 网站建设的业务流程图拔萝卜视频播放在线观看免费
  • 建个网站要多少钱高安网站制作
  • dw设计模板百度ocpc如何优化
  • 苏宁网站优化与推广html教程网站
  • 怎么做网站网页免费高清屏幕录像
  • 网络推广哪个网站好亚马逊网站开发使用的什么方式
  • 佛山企业网站建设咨询怎么从零开始做网站