1. 程式人生 > >opengl學習筆記-第一個視窗

opengl學習筆記-第一個視窗


/*
#include<glad\glad.h>一定要放在GLEW之前
*/

#include<glad\glad.h>
#include<GLFW\glfw3.h>
#include<iostream>

using namespace std;

void framebuffer_size_callback(GLFWwindow* window, int width, int height);
void processInput(GLFWwindow *window);

int main(){
    glfwInit();
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3
); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); //我們需要告訴GLFW我們要使用的OpenGL版本是3.3 //我們將主版本號(Major)和次版本號(Minor)都設為3。 //我們同樣明確告訴GLFW我們使用的是核心模式(Core-profile)。 //明確告訴GLFW我們需要使用核心模式意味著我們只能使用OpenGL功能的一個子集 GLFWwindow* window = glfwCreateWindow(800
, 600, "LearnOpenGL", NULL, NULL);//建立一個視窗 if (window == NULL){ cout << "Failed to create GLFW window" << endl; glfwTerminate(); return -1; } //通知GLFW將我們視窗的上下文設定為當前執行緒的主上下文了。 glfwMakeContextCurrent(window); //註冊framebuffer_size_callback這個函式,告訴GLFW我們希望每當視窗調整大小的時候呼叫這個函式
glfwSetFramebufferSizeCallback(window, framebuffer_size_callback); //初始化GLAD--->用來管理OpenGL的函式指標的 if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)){ cout << "Failed to initialize GLAD" << endl; return -1; } //渲染迴圈 while (!glfwWindowShouldClose(window)){//函式在我們每次迴圈的開始前檢查一次GLFW是否被要求退出 //輸入 processInput(window); //渲染指令 //當呼叫glClear函式,清除顏色緩衝之後,整個顏色緩衝都會被填充為glClearColor裡所設定的顏色 glClearColor(0.2f, 0.3f, 0.3f, 1.0f); //來清空螢幕的顏色緩衝,它接受一個緩衝位(Buffer Bit)來指定要清空的緩衝 //可能的緩衝位有GL_COLOR_BUFFER_BIT,GL_DEPTH_BUFFER_BIT和GL_STENCIL_BUFFER_BIT。 //由於現在我們只關心顏色值,所以我們只清空顏色緩衝。 glClear(GL_COLOR_BUFFER_BIT); //檢查並呼叫事件,交換緩衝 //函式會交換顏色緩衝(它是一個儲存著GLFW視窗每一個畫素顏色值的大緩衝) //它在這一迭代中被用來繪製,並且將會作為輸出顯示在螢幕上。 glfwSwapBuffers(window); //函式檢查有沒有觸發什麼事件(比如鍵盤輸入、滑鼠移動等)、 glfwPollEvents(); } glfwTerminate(); return 0; } void processInput(GLFWwindow *window){ //檢查使用者是否按下了返回鍵(Esc) //如果沒有按下,glfwGetKey將會返回GLFW_RELEASE //如果使用者的確按下了返回鍵,glfwGetKey將會返回GLFW_PRESS //我們將通過glfwSetwindowShouldClose使用把WindowShouldClose屬性設定為 true的方法關閉GLFW。 //下一次while迴圈的條件檢測將會失敗,程式將會關閉 if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS){ glfwSetWindowShouldClose(window, true); } } void framebuffer_size_callback(GLFWwindow* window, int width, int height){ //設定Viewport-->OpenGL渲染視窗的尺寸大小 glViewport(0, 0, width, height);//前兩個引數控制視窗左下角的位置x,y 第三個和第四個引數控制渲染視窗的寬度和高度(畫素)。 }

效果:
這裡寫圖片描述

相關推薦

opengl學習筆記-第一視窗

/* #include<glad\glad.h>一定要放在GLEW之前 */ #include<glad\glad.h> #include<GLFW\glfw3.h> #include<iostream>

OpenGL學習 02 第一三角形

三角形示例程式碼,補全了LoadShader等部分(使用vs2015 控制檯程式)。 #include "stdafx.h" #include <iostream> #include <vector> using namespace std; #include <G

C#學習筆記-第一程式

第一個程式 using System; namespace MyApplication {     class HelloWorld     {         static void Main(

Python網路爬蟲學習筆記——第一爬蟲程式

執行環境 語言 Python3 第三方庫 pip install reqeusts pip install BeautifulSoup4 pip install jupyter 線上編輯器 安裝 jupyter 模組後,在cmd視窗中執行命令jupyte

OpenGL實踐之第一視窗

OpenGL實踐之第一個視窗 DionysosLai [email protected] 引言:         OpenGL 經過多年的發展,到目前為止已經發生了全新的變化,從原本已函式為中心方法,轉變成已桌上技術為中心。引用《OpenGL權威指南》 第八版中一

openGL學習筆記--開啟一個視窗

轉自:https://blog.csdn.net/cordova/article/details/77986123// opengltest.cpp : 定義控制檯應用程式的入口點。 // #include "stdafx.h" #define NDEBUG // 表示不使

OpenGL學習筆記:GLAD和第一視窗

環境 系統:Windows10 64位 家庭中文版 IDE:Visual Studio 2017 專業版 參考教程:https://learnopengl-cn.github.io/01 Getting started/03 Hello Window/ 步驟 1.獲取GLAD

OpenGL系列學習教程(零)---第一視窗

【寫在前面】 首先,要說明的是:這個系列將使用glfw+glad作為基本的視窗系統和opengl擴充套件,編譯器則為 VS2013。 其次,本篇從獲取、編譯、連結glfw+glad庫講起,然後建立glfw環境,並保證它能夠正確地建立OpenGL上下文並顯示視窗,所以已經搭

PyQt5學習筆記01----第一視窗

寫在前面的話       最近想學習一下桌面程式開發,可是MFC臃腫複雜介面難看,而WPF無法跨平臺,似乎只剩下了QT這一個選擇。本來想借著學習python熱情,看看python下有木有什麼好看的圖形庫,怎奈我用的python3.* 不支援wxpython(才疏學淺,

opengl學習筆記1:vs2013 nehe教程第一課 建立視窗

近來需要想學習一下opengl,但是小白沒有任何基礎,也非計算機專業出身,只能一步一步學習nehe的程式來學習了。這裡實現了在WIN10 vs2013 opengl2.0 環境下跑通nehe教程第一課的程式。 1.系統配置 新建vs2013 “win

OpenGL學習筆記(2)第一程式——猶他茶壺(Teapot)

好了,python+opengl的開發環境搭建好後,我們就可以開始學習了。 這裡,我們先學習一個常見的例子——猶他茶壺。 先貼程式碼 fromOpenGL.GL import*fromOpenGL.GLU import*fromOpenGL.GLUT import

(一)MFC學習之建立第一視窗

環境:windows10+vs2017 需要兩個類: 1,CMyWnd,繼承自CFrameWnd(視窗框架類,視窗有就是這個類的例項化物件) 2,CMyApp,繼承自CWinApp(app類,在這個類中的InitInstance方法中例項化視窗,初始化自己的視窗型別成員變數) 使

FreeSWITCH學習筆記 第一場 第四鏡頭 區域網支援

在區域網內進行的測試,需要進行ACL的配置 conf/autoload_configs/acl.conf.xml 中,加入下面配置: <list name="localnet.auto

FreeSWITCH學習筆記 第一場 第五鏡頭 新增新SIP使用者

前面的章節有介紹,FreeSWITCH安裝完成後會生成20個預設SIP使用者(1000-1019),可以直接進行註冊。如果想新增使用者可以通過三步操作實現: 在 conf/director

FreeSWITCH學習筆記 第一場 第八鏡頭 API和App

API :又可以稱作API Commands,例如前面章節使用的originate APP:Application APP TipS:FreeSWITCh是一個典型的B2BUA(背靠背

FreeSWITCH學習筆記 第一場 第二鏡頭 視訊通話配置

上一章,我們講述瞭如何在Windows下安裝FreeSWITCH,如果細心測試就會發現視訊通話是不能用的。這是因為FreeSWITCH預設是不處理音視訊編解碼的,所以,要設定它採用 media p

OpenGL 入門基礎教程 —— 在第一視窗繪製一個三角形

首先了解緩衝區物件相關: 1:緩衝區物件的定義 GLuint vertexbuffer; //定義了一個unsigned int型別的正整形緩衝區物件2:建立緩衝區物件—建立 void glGenBuffers(GLsizei n, GLuint *buffers)

vue學習筆記第一天-vue.js簡易留言板

fad ima con targe right 彈出框 n) ade ack <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> &l

OpenGL學習筆記-頂點輸入

創建 oat ati 數量 class rda sign 學習筆記 不同 1.構造頂點數據,以三角形為例子,float vertices[] = { -0.5f, -0.5f, 0.0f, 0.5f, -0.5f, 0.0f, 0.0f, 0.5f, 0.0f }; 2.構

《算法導論》學習筆記第一章(算法在計算中的作用)

out sep round 第一章 about win knowledge mode owin   第一章主要講了一些概念,什麽是算法,為什麽算法值得研究。   印象比較深的是章節的最後一句,是否具有算法知識與技術的堅實基礎是區分真正熟練的程序員與初學者的一個特征。使用現代