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

计算机图形学:实验环境配置

        由于OpenGL是一个图形API,并不是一个独立的平台,它需要一个编程语言来工作,在这里我们使用的是C++。

        在使用c++时需要配置相关的环境,c++相比于python需要自己手动查找对应的库下载,这里推荐使用Visual Studio进行相关配置。

        我具体介绍两个主要库的配置,glfw和glew

添加OpenGL依赖项

        打开vs,  工具 ->  NuGet 包管理器  ->  管理解决方案的  NuGet 程序包

1.glfw的下载

        在浏览中找到glfw

        如果出现外部符号或者无法链接的情况,可以打开解决方案管理器,右键,点击属性,找到链接器中的输入:

        在附加依赖项中添加 opengl32.lib,确定并应用后,重新运行

2.glew的下载

        同上,在工具包中找到glew库

        选择glew ->  右边项目打勾  ->  安装

        可以使用下列代码检查是否成功安装

#include <GL/glew.h>
#include <GLFW/glfw3.h>
#include <iostream>
#include <cmath>
 
void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) {
    if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) {
        glfwSetWindowShouldClose(window, GLFW_TRUE);
    }
}
 
int main() {
    // 初始化GLFW
    if (!glfwInit()) {
        std::cerr << "Failed to initialize GLFW" << std::endl;
        return -1;
    }
 
    // 创建窗口
    GLFWwindow* window = glfwCreateWindow(800, 600, "GLEW Test", NULL, NULL);
    if (!window) {
        std::cerr << "Failed to create GLFW window" << std::endl;
        glfwTerminate();
        return -1;
    }
 
    // 设置当前窗口的上下文为活动上下文
    glfwMakeContextCurrent(window);
 
    // 初始化GLEW
    glewExperimental = GL_TRUE; // 启用GLEW的实验性功能
    if (glewInit() != GLEW_OK) {
        std::cerr << "Failed to initialize GLEW" << std::endl;
        return -1;
    }
 
    // 设置视口大小
    int width, height;
    glfwGetFramebufferSize(window, &width, &height);
    glViewport(0, 0, width, height);
 
    // 设置清除颜色
    glClearColor(1.0f, 1.0f, 1.0f, 1.0f); // 白色背景
 
    // 启用深度测试
    glEnable(GL_DEPTH_TEST);
 
    // 主循环
    while (!glfwWindowShouldClose(window)) {
        // 清除颜色缓冲区和深度缓冲区
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
        // 绘制绿色的三角形
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        gluPerspective(45.0, (double)width / (double)height, 0.1, 100.0);
 
        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();
        gluLookAt(0.0, 0.0, 5.0,  // 眼睛位置
            0.0, 0.0, 0.0,   // 观察点
            0.0, 1.0, 0.0);  // 上方向
 
        glBegin(GL_TRIANGLES);
        glColor3f(0.0f, 1.0f, 0.0f); // 绿色
        glVertex3f(-0.5f, -0.5f, 0.0f);
        glVertex3f(0.5f, -0.5f, 0.0f);
        glVertex3f(0.0f, 0.5f, 0.0f);
        glEnd();
 
        // 交换缓冲区
        glfwSwapBuffers(window);
 
        // 处理事件
        glfwPollEvents();
    }
 
    // 清理资源
    glfwDestroyWindow(window);
    glfwTerminate();
    return 0;
}

        如果发生报错,原因和上述类似,这次缺少的库是 glu32.lib ,同样在属性中加入便可(要用回车在下边加上,不能跟在上个库后面加分号添加),故而自行运行其他代码时,出现类似的报错可寻求相近的解决措施。

相关文章:

  • 基于Matlab实现串口实时显示波形GUI界面(源码)
  • Linux 驱动入门(6)—— IRDA(红外遥控模块)驱动
  • 代码随想录算法训练营day40(补0208)
  • “死”循环(查漏补缺)
  • 055 SpringCache
  • cs106x-lecture14(Autumn 2017)-SPL实现
  • 【Java进阶学习 第五篇】JDK8、9中的接口新特性
  • ARM Cortex-M3 技术解析:核寄存器R1-R15介绍及使用
  • 第五章:工程化实践 - 第三节 - Tailwind CSS 大型项目最佳实践
  • kafka+spring cloud stream 发送接收消息
  • 华为OD机试真题-相对开音节-OD统一考试(E卷)
  • Meterpreter之getsystem命令提权原理详解
  • Zotero 快速参考文献导出(特定期刊引用)
  • 区块链相关方法-波士顿矩阵 (BCG Matrix)
  • Codes 开源免费研发项目管理平台 2025年第一个大版本3.0.0 版本发布及创新的轻IPD实现
  • 在LangFlow中集成OpenAI Compatible API类型的大语言模型
  • 不同类型的网站选择不同的服务器,那么应该怎么选择服务器呢?
  • STM32-心知天气项目
  • python包重要修改
  • 如何把windows机器作为SSH客户端免密登录
  • 350种咖啡主题图书集结上海,20家参展书店买书送咖啡
  • 警方通报男子广州南站持刀伤人:造成1人受伤,嫌疑人被控制
  • 现场丨在胡适施蛰存等手札与文献间,再看百年光华
  • 1至4月全国铁路发送旅客14.6亿人次,创同期历史新高
  • 牛市早报|4月新增社融1.16万亿,降准今日正式落地
  • “老中青少”四代同堂,季春艳携锡剧《玲珑女》冲击梅花奖