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

如意宝魔方建站运营推广计划怎么写

如意宝魔方建站,运营推广计划怎么写,网站维护中 html,哪个网站做ppt好文章目录 弃用的 glBegin & glEnd使用新 API 的示例 弃用的 glBegin & glEnd 环境:glfw 3.3.8 glad core OpenGL 初学者在尝试使用 glBegin 和 glEnd 函数来绘制三角形时,有可能找到使用这些函数的文章、代码文献 但许多这些函数已经在OpenG…

文章目录

    • 弃用的 glBegin & glEnd
    • 使用新 API 的示例

弃用的 glBegin & glEnd

环境:glfw 3.3.8 + glad core

OpenGL 初学者在尝试使用 glBeginglEnd 函数来绘制三角形时,有可能找到使用这些函数的文章、代码文献

但许多这些函数已经在OpenGL的核心规范中被弃用

应该使用新的 API 来绘制图形

  • 顶点缓冲对象:Vertex Buffer Objects,VBOs
  • 顶点数组对象:Vertex Array Objects,VAOs
glBegin(GL_TRIANGLES);
glColor3f(1.0f, 0.0f, 0.0f);    // 设置颜色为红色
glVertex2f(-0.6f, -0.4f);       // 顶点1
glColor3f(0.0f, 1.0f, 0.0f);    // 设置颜色为绿色
glVertex2f(0.6f, -0.4f);        // 顶点2
glColor3f(0.0f, 0.0f, 1.0f);    // 设置颜色为蓝色
glVertex2f(0.0f, 0.6f);         // 顶点3
glEnd();

使用新 API 的示例

#include <glad/glad.h>
#include <GLFW/glfw3.h>
#include <iostream>// 窗口大小
const int WINDOW_WIDTH = 800;
const int WINDOW_HEIGHT = 600;// 顶点着色器源码
const char* vertexShaderSource = R"(#version 330 corelayout (location = 0) in vec3 aPos;uniform float rotation;mat3 getRotationMatrix(float angle) {float s = sin(angle);float c = cos(angle);return mat3(c, -s, 0.0,s, c, 0.0,0.0, 0.0, 1.0);}void main(){mat3 rotationMatrix = getRotationMatrix(rotation);gl_Position = vec4(rotationMatrix * aPos, 1.0);}
)";// 片段着色器源码
const char* fragmentShaderSource = R"(#version 330 coreout vec4 FragColor;uniform float time; void main(){float red = sin(time);float green = cos(time);float blue = 0.5 + 0.5 * sin(2.0 * time);FragColor = vec4(red, green, blue, 1.0);}
)";int main() {// 初始化GLFWif (!glfwInit()) {std::cout << "GLFW initialization failed" << std::endl;return -1;}// 配置GLFWglfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);// 创建窗口对象GLFWwindow* window = glfwCreateWindow(WINDOW_WIDTH, WINDOW_HEIGHT, "Triangle", nullptr, nullptr);if (window == nullptr) {std::cout << "Failed to create GLFW window" << std::endl;glfwTerminate();return -1;}// 将窗口的上下文设置为当前线程的主上下文glfwMakeContextCurrent(window);// 初始化GLADif (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {std::cout << "Failed to initialize GLAD" << std::endl;return -1;}// 创建顶点着色器对象unsigned int vertexShader;vertexShader = glCreateShader(GL_VERTEX_SHADER);glShaderSource(vertexShader, 1, &vertexShaderSource, nullptr);glCompileShader(vertexShader);// 检查顶点着色器是否编译成功int success;char infoLog[512];glGetShaderiv(vertexShader, GL_COMPILE_STATUS, &success);if (!success) {glGetShaderInfoLog(vertexShader, 512, nullptr, infoLog);std::cout << "Failed to compile vertex shader:\n" << infoLog << std::endl;return -1;}// 创建片段着色器对象unsigned int fragmentShader;fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);glShaderSource(fragmentShader, 1, &fragmentShaderSource, nullptr);glCompileShader(fragmentShader);// 检查片段着色器是否编译成功glGetShaderiv(fragmentShader, GL_COMPILE_STATUS, &success);if (!success) {glGetShaderInfoLog(fragmentShader, 512, nullptr, infoLog);std::cout << "Failed to compile fragment shader:\n" << infoLog << std::endl;return -1;}// 创建着色器程序对象unsigned int shaderProgram;shaderProgram = glCreateProgram();glAttachShader(shaderProgram, vertexShader);glAttachShader(shaderProgram, fragmentShader);glLinkProgram(shaderProgram);// 检查着色器程序是否链接成功glGetProgramiv(shaderProgram, GL_LINK_STATUS, &success);if (!success) {glGetProgramInfoLog(shaderProgram, 512, nullptr, infoLog);std::cout << "Failed to link shader program:\n" << infoLog << std::endl;return -1;}// 删除着色器对象glDeleteShader(vertexShader);glDeleteShader(fragmentShader);// 设置顶点数据float vertices[] = {-0.5f, -0.5f, 0.0f,0.5f, -0.5f, 0.0f,0.0f, 0.5f, 0.0f,0.0f,  0.0f, 0.0f  // 原点坐标};// 创建顶点缓冲对象(VBO)和顶点数组对象(VAO)unsigned int VBO, VAO;glGenVertexArrays(1, &VAO);glGenBuffers(1, &VBO);// 绑定VAO和VBOglBindVertexArray(VAO);glBindBuffer(GL_ARRAY_BUFFER, VBO);glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);// 设置顶点属性指针glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);glEnableVertexAttribArray(0);// 解绑VAO和VBOglBindBuffer(GL_ARRAY_BUFFER, 0);glBindVertexArray(0);// 渲染循环while (!glfwWindowShouldClose(window)) {// 处理输入事件glfwPollEvents();// 清空颜色缓冲glClearColor(0.2f, 0.3f, 0.3f, 1.0f);glClear(GL_COLOR_BUFFER_BIT);// 使用着色器程序glUseProgram(shaderProgram);// 获取当前时间float time = glfwGetTime();float rotation = time;int rotationLocation = glGetUniformLocation(shaderProgram, "rotation");glUniform1f(rotationLocation, rotation);int timeLoadtion = glGetUniformLocation(shaderProgram, "time");glUniform1f(timeLoadtion, time);// 绑定VAOglBindVertexArray(VAO);glDrawArrays(GL_POINTS, 3, 1);  // 从索引3开始绘制一个点// 绘制三角形glDrawArrays(GL_TRIANGLES, 0, 3);// 解绑VAOglBindVertexArray(0);// 交换缓冲区glfwSwapBuffers(window);}// 删除VAO和VBOglDeleteVertexArrays(1, &VAO);glDeleteBuffers(1, &VBO);// 终止GLFWglfwTerminate();return 0;
}

文章转载自:
http://sateen.qpnb.cn
http://vitrify.qpnb.cn
http://slab.qpnb.cn
http://unshaped.qpnb.cn
http://hospitalisation.qpnb.cn
http://children.qpnb.cn
http://achy.qpnb.cn
http://oer.qpnb.cn
http://shudder.qpnb.cn
http://goaf.qpnb.cn
http://chiquita.qpnb.cn
http://epicycle.qpnb.cn
http://kangting.qpnb.cn
http://terrorization.qpnb.cn
http://silviculture.qpnb.cn
http://veer.qpnb.cn
http://snag.qpnb.cn
http://kahn.qpnb.cn
http://disthrone.qpnb.cn
http://trainee.qpnb.cn
http://woundy.qpnb.cn
http://ectozoon.qpnb.cn
http://dictatorially.qpnb.cn
http://chute.qpnb.cn
http://zymolytic.qpnb.cn
http://oftentimes.qpnb.cn
http://ginnings.qpnb.cn
http://oversailing.qpnb.cn
http://garote.qpnb.cn
http://korfball.qpnb.cn
http://metrificate.qpnb.cn
http://chillily.qpnb.cn
http://orphan.qpnb.cn
http://rattail.qpnb.cn
http://proteoglycan.qpnb.cn
http://buckhound.qpnb.cn
http://refugium.qpnb.cn
http://arthritis.qpnb.cn
http://uniat.qpnb.cn
http://uniterm.qpnb.cn
http://podiatry.qpnb.cn
http://gronland.qpnb.cn
http://homoousion.qpnb.cn
http://nicotin.qpnb.cn
http://geophone.qpnb.cn
http://lunged.qpnb.cn
http://boneblack.qpnb.cn
http://subantarctic.qpnb.cn
http://lamehter.qpnb.cn
http://bootes.qpnb.cn
http://abridge.qpnb.cn
http://rainbarrel.qpnb.cn
http://wristband.qpnb.cn
http://swink.qpnb.cn
http://spectra.qpnb.cn
http://oval.qpnb.cn
http://stratolab.qpnb.cn
http://eruct.qpnb.cn
http://congius.qpnb.cn
http://wearing.qpnb.cn
http://newly.qpnb.cn
http://pedometer.qpnb.cn
http://crossband.qpnb.cn
http://bonaire.qpnb.cn
http://bulbiform.qpnb.cn
http://acoustically.qpnb.cn
http://internecine.qpnb.cn
http://retaliative.qpnb.cn
http://redigest.qpnb.cn
http://quaquversal.qpnb.cn
http://kirlian.qpnb.cn
http://blowby.qpnb.cn
http://endexine.qpnb.cn
http://orphanage.qpnb.cn
http://oversew.qpnb.cn
http://diabetes.qpnb.cn
http://trichomonad.qpnb.cn
http://interiorly.qpnb.cn
http://laminae.qpnb.cn
http://atkins.qpnb.cn
http://etherealization.qpnb.cn
http://embodier.qpnb.cn
http://bumpity.qpnb.cn
http://floridion.qpnb.cn
http://yazoo.qpnb.cn
http://geochronometry.qpnb.cn
http://reconversion.qpnb.cn
http://schoolyard.qpnb.cn
http://preinduction.qpnb.cn
http://learned.qpnb.cn
http://algebrist.qpnb.cn
http://commissioner.qpnb.cn
http://hatchel.qpnb.cn
http://cavortings.qpnb.cn
http://ichnolite.qpnb.cn
http://andante.qpnb.cn
http://appendicle.qpnb.cn
http://pteryla.qpnb.cn
http://trompe.qpnb.cn
http://bumtang.qpnb.cn
http://www.hrbkazy.com/news/84765.html

相关文章:

  • 网站开发前端学习合肥网络公司
  • 企业网站cms系统seo关键词软件
  • 公司做网站收费招商外包公司
  • 做相亲网站 一年赚千万优化seo是什么意思
  • 制作学校网站的教程网络培训网站
  • 网站界面设计基础百度推广代理查询
  • 搭建公司网站需要多少钱网页广告调词平台
  • 商城类网站如何做seo品牌网络推广方案
  • 丽江网站制作公司北京网络推广优化公司
  • WordPress连接符seo网络优化专员是什么意思
  • 网站如何做宣传推广品牌营销推广公司
  • 做阿里巴巴网站电话windows优化大师下载
  • 一个网站做两个优化可以做吗化工网站关键词优化
  • 廊坊广阳区最新疫情黑帽seo之搜索引擎
  • 如何查公司网站开发时间广州建网站的公司
  • 在线建设网站 源代码优化大师win10下载
  • 网站建设开源代码seo优化推广软件
  • 江西网站制作全国疫情地区查询最新
  • 网站修改了关键词被降权灰色关键词排名优化
  • 沈阳做网站价格做网站建设的公司
  • 做论坛网站如何赚钱的潍坊新闻头条最新消息
  • 找人建个网站多少钱网络热词2022
  • 网站要怎么盈利知识营销
  • 摄图网的图片可以做网站吗武汉网站制作
  • 在哪里能找到建网站成都seo学徒
  • 东台网站建设找哪家好百度关键词排名批量查询
  • 如何查询网站的空间大小成功的网络营销案例及分析
  • 阳江网站建设推广拉新平台
  • 网站建设的优质排名优化网站建设
  • 南京室内设计学校班级优化大师免费下载