Создание окна
This commit is contained in:
		
							parent
							
								
									a917ed5d02
								
							
						
					
					
						commit
						f828169c04
					
				
							
								
								
									
										74
									
								
								src/main.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								src/main.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,74 @@ | |||||||
|  | #include <glad/glad.h> | ||||||
|  | #include <GLFW/glfw3.h> | ||||||
|  | 
 | ||||||
|  | #include <iostream>  | ||||||
|  | 
 | ||||||
|  | #define WINDOW_WIDTH 800 | ||||||
|  | #define WINDOW_HEIGHT 600 | ||||||
|  | #define WINDOW_CAPTION "OPENGL notes on rekovalev.site" | ||||||
|  | 
 | ||||||
|  | // Функция-callback для изменения размеров буфера кадра в случае изменения размеров поверхности окна
 | ||||||
|  | void framebuffer_size_callback(GLFWwindow* window, int width, int height) | ||||||
|  | { | ||||||
|  |     glViewport(0, 0, width, height); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | int main(void) | ||||||
|  | { | ||||||
|  |     GLFWwindow* window; // Указатель на окно GLFW3
 | ||||||
|  |      | ||||||
|  |     // Инициализация GLFW3
 | ||||||
|  |     if (!glfwInit()) | ||||||
|  |     { | ||||||
|  |         std::cout << "GLFW init error\n"; | ||||||
|  |         return -1; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4); // Мажорная версия спецификаций OpenGL
 | ||||||
|  |     glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 6); // Минорная версия спецификаций OpenGL
 | ||||||
|  |     glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); // Контекст OpenGL, который поддерживает только основные функции
 | ||||||
|  |   | ||||||
|  |     // Создание окна GLFW3 с заданными шириной, высотой и заголовком окна
 | ||||||
|  |     window = glfwCreateWindow(WINDOW_WIDTH, WINDOW_HEIGHT, WINDOW_CAPTION, NULL, NULL); | ||||||
|  |     if (!window) | ||||||
|  |     { | ||||||
|  |         std::cout << "GLFW create window error\n"; | ||||||
|  |         glfwTerminate(); // Завершение работы с GLFW3 в случае ошибки
 | ||||||
|  |         return -1; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     // Установка основного контекста окна
 | ||||||
|  |     glfwMakeContextCurrent(window); | ||||||
|  |     // Установка callback-функции для изменения размеров окна и буфера кадра
 | ||||||
|  |     glfwSetFramebufferSizeCallback(window, framebuffer_size_callback); | ||||||
|  | 
 | ||||||
|  |     // Загрузка функций OpenGL с помощью GLAD
 | ||||||
|  |     if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) | ||||||
|  |     { | ||||||
|  |         std::cout << "GLAD load GL error\n"; | ||||||
|  |         glfwTerminate(); // Завершение работы с GLFW3 в случае ошибки
 | ||||||
|  |         return -1; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     // Установка цвета очистки буфера цвета
 | ||||||
|  |     glClearColor(0.0f, 0.0f, 0.0f, 1.0f); | ||||||
|  |     // Пока не произойдет событие запроса закрытия окна
 | ||||||
|  |     while(!glfwWindowShouldClose(window)) | ||||||
|  |     { | ||||||
|  |         // Очистка буфера цвета
 | ||||||
|  |         glClear(GL_COLOR_BUFFER_BIT); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |         // Тут производится рендер
 | ||||||
|  |         // ...
 | ||||||
|  | 
 | ||||||
|  |         // Представление содержимого буфера цепочки показа на окно
 | ||||||
|  |         glfwSwapBuffers(window); | ||||||
|  |         // Обработка системных событий
 | ||||||
|  |         glfwPollEvents(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     // Завершение работы с GLFW3 перед выходом
 | ||||||
|  |     glfwTerminate(); | ||||||
|  | } | ||||||
|  |   | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user