当前位置:网站首页>Chapitre 2: dessiner une fenêtre
Chapitre 2: dessiner une fenêtre
2022-06-24 07:49:00 【Code Knight】
Table des matières
2、VoirGLFWInformations sur la version
Trois、Code source expérimental
Un.、InstanciationGLFWFenêtre
1、GLFWInitialisation
#include <glad/glad.h>
#include <GLFW/glfw3.h>
#include <iostream>
int main() {
glfwInit();//InitialisationGLFW
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);// Définir le numéro de version principal
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);// Définir le numéro de version secondaire
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);// Définir le mode de base
//glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);//UtiliserMAC Système plus ce code
return 0;
}Si l'erreur suivante se produit dans le code ci - dessus , Veuillez consulter le lien solutions :(3Message (s)) Résoudre les erreurs: LNK2019 Symbole externe non résolu_Le blog de code Knight-CSDNBlogs

2、VoirGLFWInformations sur la version
void getVersion() {
int Major, Minor, Rev;
glfwGetVersion(&Major, &Minor, &Rev);
printf("GLFW %d.%d.%d initialized\n", Major, Minor, Rev);
}
Appelez cette fonction pour afficher les informations de version

3、Créer un objet de fenêtre
void createWindow() {
GLFWwindow* window = glfwCreateWindow(800, 600, "window", NULL, NULL);//Paramètres:Large,Élevé,Nom
if (window == NULL) {//La création a échoué
std::cout << "Failed to create GLFW window" << std::endl;
glfwTerminate();
return;
}
glfwMakeContextCurrent(window);
}
2.、GLAD
1、InitialisationGLAD
gladEst utilisé pour gérerOpenGLPointeur de fonction pour,Donc, on appelle n'importe quelOpenGL Nous avons tous besoin d'initialiser la fonction avant de GLAD
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
{
std::cout << "Failed to initialize GLAD" << std::endl;
return -1;
}2、Viewport
Avant de commencer le rendu, Nous devons d'abord mettre en place OpenGL Taille de la fenêtre de rendu ,C'est le viewport(ViewPort).Le but est de faireOpenGL Connaître la taille et les coordonnées de la fenêtre .On peut appelerglViewport La fonction définit la dimension de la fenêtre (Dimension):
glViewport(0, 0, 800, 600);//Paramètres: Les deux premières sont les coordonnées du coin inférieur gauche de la fenêtre , Les deux derniers sont la largeur et la hauteur de la fenêtre de rendu (Pixels)Attention!:

Fonction de rappel:

void framebuffer_size_callback(GLFWwindow* window, int width, int height); 
void framebuffer_size_callback(GLFWwindow* window, int width, int height) {
glViewport(0, 0, width, height);
} 
glfwSetFramebufferSizeCallback(window, framebuffer_size_callback); 
3、Rendre
Pour que nos fenêtres puissent être rendues en continu et recevoir l'entrée de l'utilisateur , Nous allons ajouter un paragraphe au programme whileCycle, Aussi appelé boucle de rendu (Render Loop), Ça peut être fait avant qu'on GLFContinuer à fonctionner jusqu'à la sortie.
while (!glfwWindowShouldClose(window))
{
glfwSwapBuffers(window);
glfwPollEvents();
}Description de la fonction:



4、Libérer des ressources

glfwTerminate();Trois、Code source expérimental
1、Afficher la fenêtre
#include <glad/glad.h>
#include <GLFW/glfw3.h>
#include <iostream>
#include<conio.h>
void getVersion() {
int Major, Minor, Rev;
glfwGetVersion(&Major, &Minor, &Rev);
printf("GLFW %d.%d.%d initialized\n", Major, Minor, Rev);
}
GLFWwindow* createWindow() {
GLFWwindow* window = glfwCreateWindow(800, 600, "window", NULL, NULL);//Paramètres:Large,Élevé,Nom
if (window == NULL) {//La création a échoué
std::cout << "Failed to create GLFW window" << std::endl;
glfwTerminate();
return window;
}
glfwMakeContextCurrent(window);
//_getch();
return window;
}
//Fonction de rappel
void framebuffer_size_callback(GLFWwindow* window, int width, int height) {
glViewport(0, 0, width, height);
}
int main() {
glfwInit();//InitialisationGLFW
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);// Définir le numéro de version principal
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);// Définir le numéro de version secondaire
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);// Définir le mode de base
//glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);//UtiliserMAC Système plus ce code
getVersion();
//createWindow();
GLFWwindow* window = createWindow();
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
{
std::cout << "Failed to initialize GLAD" << std::endl;
return -1;
}
//glViewport(0, 0, 800, 600);//Paramètres: Les deux premières sont les coordonnées du coin inférieur gauche de la fenêtre , Les deux derniers sont la largeur et la hauteur de la fenêtre de rendu (Pixels)
framebuffer_size_callback(window, 800, 600);
glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);
while (!glfwWindowShouldClose(window))
{
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwTerminate();
return 0;
}Résultats obtenus:

2、Modifier la couleur de fond
Structure du Code d'instruction de rendu :
//Boucle de rendu
while (!glfwWindowShouldClose(window))
{
//Entrée
processInput(window);
//Instructions de rendu
//……
// Détecter et invoquer l'événement ,Swap buffer
glfwPollEvents();
glfwSwapBuffers(window);
}
#include <glad/glad.h>
#include <GLFW/glfw3.h>
#include <iostream>
#include<conio.h>
void getVersion() {
int Major, Minor, Rev;
glfwGetVersion(&Major, &Minor, &Rev);
printf("GLFW %d.%d.%d initialized\n", Major, Minor, Rev);
}
GLFWwindow* createWindow() {
GLFWwindow* window = glfwCreateWindow(800, 600, "window", NULL, NULL);//Paramètres:Large,Élevé,Nom
if (window == NULL) {//La création a échoué
std::cout << "Failed to create GLFW window" << std::endl;
glfwTerminate();
return window;
}
glfwMakeContextCurrent(window);
//_getch();
return window;
}
//Fonction de rappel
void framebuffer_size_callback(GLFWwindow* window, int width, int height) {
glViewport(0, 0, width, height);
}
int main() {
glfwInit();//InitialisationGLFW
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);// Définir le numéro de version principal
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);// Définir le numéro de version secondaire
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);// Définir le mode de base
//glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);//UtiliserMAC Système plus ce code
getVersion();
//createWindow();
GLFWwindow* window = createWindow();
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
{
std::cout << "Failed to initialize GLAD" << std::endl;
return -1;
}
//glViewport(0, 0, 800, 600);//Paramètres: Les deux premières sont les coordonnées du coin inférieur gauche de la fenêtre , Les deux derniers sont la largeur et la hauteur de la fenêtre de rendu (Pixels)
framebuffer_size_callback(window, 800, 600);
glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);
//Boucle de rendu
while (!glfwWindowShouldClose(window))
{
//Entrée
//processInput(window);
//Instructions de rendu
glClearColor(0.0f, 0.34f, 0.57f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
// Détecter et invoquer l'événement ,Swap buffer
glfwPollEvents();
glfwSwapBuffers(window);
}
glfwTerminate();
return 0;
}
边栏推荐
- Event related | reveal how Ti-One's support ability for large-scale events is developed
- 10. Tencent cloud IOT device side learning - firmware upgrade
- any类备注
- New features of PHP: bytecode cache and built-in server
- Explain the input attribute in PHP (hide the read-only restriction)
- 『C语言』系统日期&时间
- LeetCode 207:课程表(拓扑排序判断是否成环)
- What kind of experience is it when the Institute earns 20000 yuan a month!
- 鸿蒙os开发三
- 语料库数据处理个案实例(句子检索相关个案)
猜你喜欢
随机推荐
爬虫基础B1——Scrapy(B站学习笔记)
Shell script for MySQL real-time synchronization of binlog
New features of PHP: bytecode cache and built-in server
《canvas》之第4章 线条操作
Deploy L2TP in VPN (Part 2)
Detailed explanation of PHP data serialization test example
Pair class notes
Domain environment importing Tencent cloud considerations
BOM笔记
UE common console commands
力扣(LeetCode)174. 地下城游戏(2022.06.23)
图形技术之坐标转换
站在风暴中心:如何给飞奔中的腾讯更换引擎
Global and Chinese market of water massage column 2022-2028: Research Report on technology, participants, trends, market size and share
Deploy L2TP in VPN (medium)
Jenkins 太老了 试试它?云原生 CI/CD Tekton
Inline element, block element, inline block element
热赛道上的冷思考:乘数效应才是东数西算的根本要求
First acquaintance with JUC - day01
常见的数组封装








