OpenGL筆記一之基礎窗體搭建以及事件響應
總結自bilibili趙新政老師的教程
code review!
文章目錄
- OpenGL筆記一之基礎窗體搭建以及事件響應
- 1.運行
- 2.目錄結構
- 3.main.cpp
- 4.CMakeList.txt
1.運行
2.目錄結構
01_GLFW_WINDOW/
├── CMakeLists.txt
├── glad.c
├── main.cpp
└── thirdParty├── include│ ├── glad│ │ └── glad.h│ ├── GLFW│ │ ├── glfw3.h│ │ └── glfw3native.h│ └── KHR│ └── khrplatform.h└── lib└── glfw3.lib6 directories, 8 files
3.main.cpp
#include <iostream>//注意:glad頭文件必須在glfw引用之前引用
#include<glad/glad.h>
#include <GLFW/glfw3.h>/*
* 目標:-創建glfw的窗體系統-加入窗體變化的事件回調-加入鍵盤消息事件回調
*
*///聲明且實現一個響應窗體大小變化的函數
void frameBufferSizeCallBack(GLFWwindow* window, int width, int height) {std::cout << "窗體最新大小:" << width << " , " << height << std::endl;
}//聲明且實現一個鍵盤消息回調函數
void keyCallBack(GLFWwindow* window, int key, int scancode, int action, int mods) {if (key == GLFW_KEY_W) {//觸發了w}if (action == GLFW_PRESS) {//鍵位按下}if (action == GLFW_RELEASE) {//鍵位抬起}if (mods == GLFW_MOD_CONTROL) {//按下ctrl的同時,按下了key}if (mods == GLFW_MOD_SHIFT) {//按下shift的同時,按下了key}std::cout << "按下了:" << key << std::endl;std::cout << "action:" << action << std::endl;std::cout << "mods:" << mods << std::endl;
}int main() {
//1 初始化GLFW基本環境glfwInit();//1.1 設置OpenGL主版本號、次版本號glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);//1.2 設置OpenGL啟用核心模式(非立即渲染模式)glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);//2 創建窗體對象GLFWwindow* window = glfwCreateWindow(800, 600, "OpenGLStudy", NULL, NULL);//**設置當前窗體對象為OpenGL的繪制舞臺glfwMakeContextCurrent(window);//設置監聽,監聽窗體大小變化的消息glfwSetFramebufferSizeCallback(window, frameBufferSizeCallBack);//設置監聽,監聽鍵盤消息glfwSetKeyCallback(window, keyCallBack);//3 執行窗體循環while (!glfwWindowShouldClose(window)) {//接收并分發窗體消息//檢查消息隊列是否有需要處理的鼠標、鍵盤等消息//如果有的話就將消息批量處理,清空隊列glfwPollEvents();}//4 退出程序前做相關清理glfwTerminate();return 0;
}
4.CMakeList.txt
# 指定 CMake 最低版本
cmake_minimum_required(VERSION 3.12)# 項目名稱
project(OpenGL_Lecture)# 設置 C++ 標準
set(CMAKE_CXX_STANDARD 17)# 包含頭文件目錄
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/thirdParty/include/usr/include
)# 包含庫文件目錄
link_directories(${CMAKE_CURRENT_SOURCE_DIR}/thirdParty/lib/usr/lib/x86_64-linux-gnu
)# 設置 CMAKE_PREFIX_PATH 以找到 GLFW
set(CMAKE_PREFIX_PATH "/usr/local/lib/cmake/glfw3")
set(GLFW_DIR "/usr/local/lib/cmake/glfw3")# 查找 GLFW3 庫
find_package(glfw3 REQUIRED CONFIG)# 添加可執行文件
add_executable(openglStudy "main.cpp" "glad.c")# 鏈接庫
target_link_libraries(openglStudy glfw)