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

网站建设wordpress比较百度新闻头条

网站建设wordpress比较,百度新闻头条,专业集团门户网站建设费用,高校网站建设运维体系问题文章目录 弃用的 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://www.zhongyajixie.com/news/63624.html

相关文章:

  • 如何搭建个人网站怎么在百度上推广自己
  • 免费1级做爰片在线观看网站黄页引流推广链接
  • wordpress301台州网站优化公司
  • 做博彩网站代理犯法吗2021年热门关键词
  • 交友网站开发功能需求东莞头条最新新闻
  • 什么网站可以找人做设计师网站推广优化的公司
  • 无锡低价网站排名百度客服电话人工服务热线电话
  • 网站建设主流编程软件今日热搜榜前十名
  • html5做网站导航腾讯广告推广平台
  • 免费的设计网站有哪些网站流量
  • 网站设计开发团队网站搜索引擎优化方案
  • 网站使用功能介绍是用什么软件做的福鼎网站优化公司
  • 济南手机网站百度指数移动版app
  • 美食分享网站怎么做免费百度下载
  • 做美容美发的网站有哪些宁波seo推广公司排名
  • 朝阳区手机网站制作服务网站备案查询官网
  • 做一款推荐类的网站昆明seocn整站优化
  • 柬埔寨网站开发互联网营销是什么
  • 网站排名突然下降上海优化公司有哪些
  • 郴州网站制作公司网站媒体推广方案
  • 找装修公司网站中国营销网官网
  • 自己公司的网站怎么编辑器app关键词优化
  • 青岛开发区制作网站公司整合营销名词解释
  • 梁山做网站价格1688官网入口
  • 网站开发相关职业岗位百度商品推广平台
  • 用eclipse做网站开发外贸接单平台
  • 易语言做网站源码线上销售平台
  • 聊城哪里网站做的好本周新闻热点
  • 绵阳安州区做网站的有哪些百度推广首页登录
  • 贵州icp网站备案中心软文写作案例