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

长春建站模板制作灰色网站如何推广

长春建站模板制作,灰色网站如何推广,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.yayakq.cn/news/813581/

相关文章:

  • 个人网站做电影网站上海外贸公司注册流程及条件
  • 怎样才能做网站wordpress 家教
  • 系统那个网站好谷歌搜索广告优化
  • 做海报的网站什么编辑建设网站建设哪家便宜
  • 杭州网站排名优化公司个人论坛类网站
  • 在线网站流量查询做服装外贸的网站
  • 网站建设技术选择哪个网站是做安全教育
  • html 好的网站建设网站 宣传平台
  • 奖励网站代码浙江网站备案加急
  • 网站改版介绍网站建设项目计划书
  • 什么网站做简历最好粉色做网站背景图片
  • 做设计找图有哪些网站怀化网站优匿
  • 专业做调查的网站单页面网站制作教程
  • html5网站开发实例教程西安 网站 高端 公司
  • 太原网站开发工程师动漫网站建站目的
  • 横沥网站制作招聘怎样创建网站域名平台
  • 可以建网站的公司如何注册公司企业邮箱
  • 邢台手机网站建设多少钱网站设计所用的软件
  • 建网站申请最好看的直播免费的
  • 华亭县门户网站wordpress如何实现多语言版本
  • 网页链接成整体通过网站舞阳网站建设
  • 秦皇岛高端网站设计ui设计无经验找工作
  • 微信知彼网络网站建设做彩票网站被捉将受到什么惩罚
  • 太原做网站排名织梦招商加盟网站源码
  • wordpress教程下载苏州seo培训
  • 网站怎么做电脑系统公司企业邮箱有哪些
  • 正规的丹阳网站建设广东省建筑工程信息网
  • 怎么搭建本地网站东平县建设局网站
  • 网站做系统九一赣州人才网
  • 中国建设银行陕西省分行网站建立企业网站 优帮云