1. 程式人生 > >【VS開發】【OpenGL開發】OpenGL---Windows下配置與第一個OpenGL程式

【VS開發】【OpenGL開發】OpenGL---Windows下配置與第一個OpenGL程式

面記錄一下Windows下配置OpenGL與我的第一個OpenGL程式。


第一步:選擇一個編譯環境


現在Windows系統的主流編譯環境有Visual Studio,Broland C++ Builder,Dev-C++等,它們都是支援OpenGL的。但這裡我選擇的是VS 2010作為學習OpenGL的環境。   
第二步:安裝GLUT工具包  

GLUT不是OpenGL所必須的,但它會給我們的學習帶來一定的方便,推薦安裝。    

自己可以搜尋“OpenGL SDK”下載,或者到官網上下載。  

OpenGL官方網站(英文)
http://www.opengl.org   

Windows環境下安裝GLUT的步驟:    

1.將SDK中的.h檔案拷貝到VC的\Include\GL目錄中 2.將.lib檔案拷貝到Visual C++ 6.0的\lib目錄中 3.將.dll檔案拷貝到作業系統的system32目錄中


第三步,建立工程,其步驟如下:    

(1)建立一個Win32 Console Application。(以我建立的為例,工程名為simpleGL)    
(2)選擇空工程即可。

第四步,建立一個最簡單的opengl程式

[cpp] view plain copy
/* 
 *    第一個OpenGL程式.  
 */  
#define GLUT_DISABLE_ATEXIT_HACK  
#include<gl/GLUT.H>  
#include<gl/GLU.H>  
#include<gl/GL.H>  
#include <math.h>  
/************************************************************************ 
 * 畫一個正弦函式曲線 
 * @author neng 
 * @date                                                               
************************************************************************/  
const GLfloat factor = 0.1f;//讓正弦函式比例放大  
void myDisplay(void)  
{  
    GLfloat x;  
    glClear(GL_COLOR_BUFFER_BIT);  
    //畫x,y座標  
    glEnable(GL_LINE_STIPPLE);//啟動虛線  
    glLineStipple(2,0x0F0F);//設定虛線樣式  
    glLineWidth(2.0f);    //設定線寬  
    glBegin(GL_LINES);  
        glVertex2f(-1.0f,0.0f);  
        glVertex2f(1.0f,0.0f);  
        glVertex2f(0.0f,-1.0f);  
        glVertex2f(0.0f,1.0f);  
    glEnd();  
    //畫正弦函式曲線  
    glDisable(GL_LINE_STIPPLE);//禁止虛線  
    glBegin(GL_LINE_STRIP);  
        for (x=-1.0f/factor;x<1.0f/factor;x+=0.01f)  
        {  
            glVertex2f(x*factor,sin(x)*factor);  
        }  
    glEnd();  
    glFlush();  
}  
int main(int argc,char *argv[])  
{  
    glutInit(&argc,argv);  
    glutInitDisplayMode(GLUT_RGB|GLUT_SINGLE);  
    glutInitWindowPosition(100,100);  
    glutInitWindowSize(400,400);  
    glutCreateWindow("我的第一個OpenGL程式");  
    glutDisplayFunc(&myDisplay);  
    glutMainLoop();//進行訊息迴圈  
    return 0;  
}  


該程式的作用是在一個黑色的視窗中央畫一個正弦函式曲線


下面對各行語句進行說明。

#define GLUT_DISABLE_ATEXIT_HACK 這句必須定義,否則會報錯報錯“error LNK2001: 無法解析的外部符號 [email protected]......”。 報錯原因在GLUT.h檔案中有說明。



首先,需要包含標頭檔案#include<GL/glut.h>,這是GLUT的標頭檔案。
本來OpenGL程式一般還要包含<GL/gl.h>和<GL/glu.h>,但GLUT的標頭檔案中已經自動將這兩個檔案包含了,不必再次包含。

注意main函式中的各語句,除了最後的return之外,其餘全部以glut開頭。這種以glut開頭的函式都是GLUT工具包所提供的函式,下面對用到的幾個函式進行介紹。
1、glutInit,對GLUT進行初始化。其格式比較死板,照抄glutInit(&argc, argv)就可以。
2、glutInitDisplayMode,設定顯示方式,其中GLUT_RGB表示使用RGB顏色,與之對應的還有GLUT_INDEX(表示使用索引顏色)。GLUT_SINGLE表示使用單緩衝,與之對應的還有GLUT_DOUBLE(使用雙緩衝)。

3、glutInitWindowPosition,設定視窗在螢幕中的位置。
4、glutInitWindowSize,設定視窗的大小。
5、glutCreateWindow,建立視窗。引數將被作為視窗的標題。注意:視窗被建立後,並不立即顯示到螢幕上,需要呼叫glutMainLoop才能看到視窗。
6、glutDisplayFunc,設定一個函式,當需要進行畫圖時,這個函式就會被呼叫。

7、glutMainLoop,進行一個訊息迴圈。

以gl開頭的函式都是OpenGL的標準函式。


1、glClear,清除。

2、glBegin與glEnd是一對,中間寫的是要畫的內容。

3、glFlush,保證前面的OpenGL命令立即執行(而不是讓它們在緩衝區中等待)。其作用與Java IO中類似。

相關推薦

VS開發OpenGL開發OpenGL---Windows配置一個OpenGL程式

面記錄一下Windows下配置OpenGL與我的第一個OpenGL程式。 第一步:選擇一個編譯環境 現在Windows系統的主流編譯環境有Visual Studio,Broland C++ Builder,Dev-C++等,它們都是支援OpenGL的。但這裡我選擇的是V

OpenGL詳解一個OpenGL程式

/////////////////////////////////////////////////////////////////////// // // triangles.cpp // ////////////////////////////////////////////////////////////

環境配置opencv3.x model中viz模組的配置使用

1、配置 viz模組是opencv 中用於三維視覺化的部件,基於vtk,在編譯opencv需要使用這個模組時需要先編譯VTK。編譯VTK參考之前的部落格【環境配置】(零)vtk+vs2013+qt5 cmake時勾選 WITH_VTK,BUILD_opencv_viz:新增VTK_DIR

python用Notepad++編寫出一個python程式

首先我們要安裝Notepad++ 官網下載:https://notepad-plus-plus.org/ 網盤下載:https://pan.baidu.com/s/1b3FNZ8w47HYes57YeG3KmA 提取碼: cu89 安裝簡單,選擇簡體中文安裝就好了,中間會有個配置安裝路徑

配置windows配置tomcat和zookeeper為服務

最近在電腦上配置dubbo的環境,由於使用的windows的系統,所以想讓dubbo控制檯和依賴的zookeeper都常駐系統後臺,並且在我開機的時候能夠啟動,這就不得不讓我想到了吧他們作為系統的服務來啟動,這樣系統在開機的時候就可以自動執行這些服務了。一、tomcat配置為

如何編譯一個uefi程式轉載

配置: win8.1 x64 + VS2013 + UDK2015 這裡略過初步的EDK原始碼編譯配置過程,在下載的UDK2015中有UDK2015-ReleaseNotes-MyWorkSpace.txt教如何搭建環境,照做完全沒有問題。 下面參考了某

教她寫程式碼使用Intellij建立一個Springboot程式

首先先介紹一下Springboot:Spring是Java開發中,十分著名的一個框架。但是該框架的使用必須結合大量的XML配置檔案,這一點讓開發人員痛苦無比。Springboot是Spring官方重新構造的一個框架,將Spring的配置簡化了很多。 著名IDE,Intellij介紹:老牌的Java程式碼I

SignalR學習系列2. 一個SignalR程式

新建專案 1.使用VisualStudio 2015 新建一個Web專案 2.選擇空模板 3.新增一個新的SignalR Hub Class (v2)類檔案,並修改類名為ChatHub   4.修改ChatHub程式碼 using System; using Sys

Windows配置Objective-C開發環境

hello rtc linker ces objc 安裝 指定 lighting 如果 一、IDE的安裝(Code::Blocks) 我們選用Code::Blocks作為IDE,它的安裝包可以從網上各處下載下來,對版本無特別要求。筆者使用的是16.10的版本(鏈接: htt

windows配置React-Native(Android)開發環境總結

首先配置環境我們需要用到以下工具: node.js react-native-cli Android Studio JDK(1.8以上) SDK python 1.安裝node.js和react-native-cli命令列工具

iOS開發一個iOS程式分析——AppDelegate.h檔案和檢視View、檢視控制器ViewController

在上一篇文章iOS開發:第一個iOS程式分析——代理,生命週期函式中主要介紹了iOS使用Objective-C開發的兩個主要檔案main.m和AppDelegate.m和控制程式生命週期的函式,接下來將介紹另外兩個檔案:AppDelegate.h檔案、UIViewController.m檔案和i

iOS開發一個iOS程式分析——代理,生命週期函式

上一篇文章中我們開發了第一個iOS應用程式,用來計算兩個整數的和,今天我們將介紹其中的兩個檔案: 1.main.m檔案 首先展開supporting Files並且開啟其下的main.m檔案,其中main函式就是應用程式的入口,main函式只是標記了一個自動釋放池自動決定何時釋放記憶體,

iOS開發一個iOS程式,加法計算器

相信很多學習程式設計的人,不管是學習C,C++,JAVA,還是iOS開發用的Objective-C,入門不久就迫切地想寫點看得見的介面玩玩。當然瞭解諸如iOS架構,系統層次這些是非常必要的,但是作為入門案例,我們不妨從最直觀的地方入手!! 下面開始編寫我們的第一個iOS程式: 1.使用的

後臺開發閱讀筆記——一個C++程式

#include <>與#include ""的區別: 前者常用來包含系統提供的標頭檔案,編譯器會到儲存系統標準標頭檔案的位置查詢標頭檔案;後者常用於包括程式設計師自己編號的標頭檔案,用這種格式時,編譯器先查詢當前目錄是否有指定名稱的標頭檔案,然後從標準頭目錄中進行查詢。

[go-web開發小試驗] 1-一個demo程式

前言 目前的go似乎值得一試。 參考 參考了網上的go web開發入門 之類的文章。 步驟 在idea上面開一個新專案,然後,嗯。。。我用的是go1.11,有module模組了,然後新增一個檔案,內容如下: package src import ( "fmt"

Java開發環境的安裝配置及在Eclipse上一個Java程式的執行

首先,我們需要下載IDE開發環境,下面的網址 https://www.eclipse.org/downloads/download.php?file=/oomph/epp/2018-09/Ra/eclipse-inst-win64.exe 下載完成後,執行我們會看到下面的畫面 如果預設

idea開發一個spark程式---統計文字單詞數

在建立專案之前確保自己本地安裝好了scala環境和java環境,因為spark是scala編寫的,scala和java一樣都是需要編譯成位元組碼,然後在JVM裡面執行。我本地的scala版本是2.11.0版本,hadoop是2.7.6版本 第一步:開啟idea,然後建立一個

MyGUI3.2.0+Ogre1.8.1開發詳解之一個MyGUI程式

  mygui是一款簡單、易用的開源圖形介面開發庫,主要面向物件是遊戲的3D介面,下面是它的官方介紹 MyGUI是為遊戲和3D應用程式建立圖形使用者介面(GUI)的一個庫。 mygui的主要目標是:速度,靈活性和易用性。(出自MyGUI官網) 官方網站:http

Spark視訊王家林3課:在IDE開發一個Scala程式純傻瓜式徹底透徹解析

內容:     1.控制結構     2.Scala的基礎語法 /**   * FileName: HelloScala   * Author:   hadoop   * Email:    [email protected]   * Date:     18-

Oracle資料庫開發必備利器之PL/SQL基礎——PL/SQL簡介和一個PL/SQL程式

什麼是PL/SQL PL/SQL:procedure Language/SQL PL/SQL是Oracle對sql語言的過程化擴充套件,指在原有的增刪查改的基礎上,對SQL命令語言中增加了過程處理語句(如分支,迴圈等),使SQL語言具有過程處理能力。 P