Featured image of post 计算机图形学试验记录

计算机图形学试验记录

记录了图形学试验的过程...

计算机图形学实验

实验准备

关于vscode c/cpp环境的准备

GLFW是一个OPENGL的C语言库,提供了基本的渲染接口,我直接下载了64位版本(这个按照你的编译器版本来)的预编译库使用。在解压后得到的lib-mingw-w64文件夹中能获取到需要使用的库文件。之后我们需要添加这个第三方库,我采用的方式是直接将库文件和头文件都放到了项目文件夹下(也许不是最好的做法)

之后下载了 GLAD 库,glad.c和main.cpp放到了同一个目录下

头文件也可以放到标准库目录下或者另外新建一个目录,并在之前的配置中配置好include路径,比如我就将头文件都放到了 D:\software\gcc\mingw64\include 下,库文件则放到了lib目录下。

之后测试是否能够正常进行绘制,新建cpp文件,写入下面的内容:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <glad/glad.h>
#include <GLFW/glfw3.h>
#include <iostream>

void framebuffer_size_callback(GLFWwindow *window, int width, int height)
{
  glViewport(0, 0, width, height);
}

int main()
{
  glfwInit();
  glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
  glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
  glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
  //glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);

  // print version info
  int Major, Minor, Rev;
  glfwGetVersion(&Major, &Minor, &Rev);
  printf("GLFW %d.%d.%d initialized\n", Major, Minor, Rev);

  // create glfw window object
  GLFWwindow *window = glfwCreateWindow(800, 600, "window", NULL, NULL);
  if (window == NULL)
  {
    std::cout << "Failed to create GLFW window" << std::endl;
    glfwTerminate();
    return -1;
  }
  glfwMakeContextCurrent(window);

  // init GLAD
  if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
  {
    std::cout << "Failed to initialize GLAD" << std::endl;
    return -1;
  }

  // create viewport
  glViewport(0, 0, 800, 600);

  // viewport adjust callback
  void framebuffer_size_callback(GLFWwindow * window, int width, int height);

  glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);

  // render loop
  while (!glfwWindowShouldClose(window))
  {
    glfwSwapBuffers(window);
    glfwPollEvents();
  }

  glfwTerminate();

  return 0;
}

之后使用 g++ -o .\test .\main.cpp 进行编译,出现了 undefined reference的报错,因为这时我还没有添加库文件

g++ -o .\test .\main.cpp .\glad.c -L.\lib -lglfw3 -lgdi32 (因为我是64位的mingw,所以还得多链接一个gdi32,不然会出错),另外注意这里编译时还加上了glad.c

最后执行 .\test.exe 得到了一个黑窗口…说明一切正常

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
本站访客数:
Built with Hugo
主题 StackJimmy 设计