1. 程式人生 > >CodeBlocks下的freeglut環境配置(一)(附圖文)

CodeBlocks下的freeglut環境配置(一)(附圖文)

#include <iostream>
#include <gl/glut.h>

using namespace std;


GLfloat eyex=0,eyey=50,eyez=35;
//===========================OpenGL部分=========================
void init()
{
   /*
    //設定材質
    GLfloat mat_ambient[] = { .8, .8, .8, 1.0 };
    GLfloat mat_diffuse[] = { .8, .0, .8, 1.0 };
    GLfloat mat_specular[] = { 1.0, .0, 1.0, 1.0 };
    GLfloat mat_shininess[] = { 50.0 };

    glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, mat_ambient);
    glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mat_diffuse);
    glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, mat_specular);
    glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, mat_shininess);
    //為了讓這些球體有一點立體感,
    //我們使用光照。在(1, 1, -1)處設定一個白色的光源

    static const GLfloat light_position[] = {1.0f, 1.0f, -1.0f, 1.0f};
    static const GLfloat light_ambient[] = {0.2f, 0.2f, 0.2f, 1.0f};
    static const GLfloat light_diffuse[] = {1.0f, 1.0f, 1.0f, 1.0f};
    static const GLfloat light_specular[] = {1.0f, 1.0f, 1.0f, 1.0f};

    glLightfv(GL_LIGHT0, GL_POSITION, light_position);    //光源位置
    glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient);    //環境光
    glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);    //漫反射
    glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);    //鏡面光

    glEnable(GL_LIGHTING);    //啟動光源
    glEnable(GL_LIGHT0);    //啟動光0
    glEnable(GL_DEPTH_TEST);//啟動深度測試
    glDepthFunc(GL_LESS);    //啟動裁剪
*/

    GLfloat light_position1[] = { 1.0, 1.0, 1.0, 0.0 };
    GLfloat light_position2[] = { 1.0, 1.0, -1.0, 0.0 };
    glLightfv(GL_LIGHT0, GL_POSITION, light_position1);
    glLightfv(GL_LIGHT1, GL_POSITION, light_position2);
    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);
    glEnable(GL_LIGHT1);
    glDepthFunc(GL_LESS);
    glEnable(GL_DEPTH_TEST);

}
void timer(int p)
{
    glutPostRedisplay();
    glutTimerFunc(20, timer, 0);
}
void display()
{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glLoadIdentity();

    gluLookAt(eyex,eyey,eyez,0,0,0 ,0,1,0);
    //繪製一個平面
    glPushMatrix();
    glTranslatef(0,-0.5,0);
        glScalef(20,1,20);
        glutSolidCube(1);
    glPopMatrix();


    glPushMatrix();
    glutSolidSphere(1,50,50);
    glPopMatrix();
    
    glutSwapBuffers(); //雙緩衝

}

void reshape(int w, int h)
{
    glViewport(0, 0, (GLsizei) w, (GLsizei) h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    if (h ==0 ) h = 1;
    gluPerspective(45.0f,(GLfloat) w / (GLfloat)h , 0.5f, -1000.0f);
    /* 正投影
    if (w <= h)
        glOrtho(-10.5, 10.5, -10.5 * (GLfloat) h / (GLfloat) w, 10.5 * (GLfloat) h
                / (GLfloat) w, -1000.0, 1000.0);
    else
        glOrtho(-10.5 * (GLfloat) w / (GLfloat) h, 10.5 * (GLfloat) w
                / (GLfloat) h, -10.5, 10.5, -1000.0, 1000.0);
    */
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
}

void keyboard(unsigned char key, int x, int y)
{

    switch (key)
    {
        case 'w':     //前
        break;
        case 's':     //後
            break;
        case 'a':     //左
            break;
        case 'd':     //右
            break;
        case 'q':    //上
            break;
        case 27:
            exit(0);
            break;
    }
}

void MouseEvent(int button, int state, int x, int y)
{
    switch(button)
    {
        case GLUT_LEFT_BUTTON:
            cout<<"GLUT_LEFT_BUTTON"<<endl;
            break;
        case GLUT_RIGHT_BUTTON:
            cout<<"GLUT_RIGHT_BUTTON"<<endl;
            break;
        case GLUT_MIDDLE_BUTTON:
            cout<<"GLUT_MIDDLE_BUTTON"<<endl;
            break;
    }
}
void MotionMove(int x,int y)
{

}
int main(int argc, char *argv[])
{

    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
    glutInitWindowPosition(100, 100);
    glutInitWindowSize(800, 600);
    glutCreateWindow("OpenGLLuaDemo");
    init();
    glutTimerFunc(20,timer,0);
    glutDisplayFunc(display);
    glutReshapeFunc(reshape);
    glutKeyboardFunc(keyboard);
    glutMouseFunc(MouseEvent);
    glutMotionFunc(MotionMove);
    glutMainLoop();
    return 0;
}


相關推薦

CodeBlocksfreeglut環境配置圖文

#include <iostream> #include <gl/glut.h> using namespace std; GLfloat eyex=0,eyey=50,eyez=35; //===========================OpenGL部分=========

雲伺服器linux系統啟動web專案環境配置_、jdk下載安裝

官網下載jdk(linux)  檢視linux 多少位 命令:getconf LONG_BIT    下載對應jdk 1.上傳壓縮包            cd ..回

Deepin開發環境配置個人備用

文章目錄 Python相關 安裝pip和pip3 虛擬環境管理 Pycharm 安裝Git 前端相關 VSCo

macpycharm環境配置選擇要用的python版本,選擇系統中的python還是獨立環境的python

pycharm提供了一個很好的機制,把依賴的環境封起來。這樣移植到其他電腦到時候就不會缺少這個那個庫的情況了。開啟偏好設定,如下圖步驟一,二。點2處的齒輪,選擇add。 出現下圖: 1處即上邊提到的“獨立環境” 2處是系統中的環境 3處是放直譯器的位置,如果提示非

windows10使用wsl子系統搭建sanic的環境篇解決所有問題

sanic的uvloop不支援在windows執行,所以只能在linux下搭建win10的wsl(子系統)已經是正式版了。部署環境時,請按照我給的順序,這樣能讓你少出bug我們首先開啟windows的w

阿里雲伺服器鍵WEB環境配置---Linux學習筆記3

我們可以看到正在執行狀態的服務及埠:9000埠是php程序服務,3306埠是mysql服務,80埠是nginx服務,21埠是ftp服務。 如果看到以上資訊,則說明安裝沒有異常。這裡有一點需要注意的是,如果您選擇安裝的是apache,則沒有上面的9000埠。為什麼選擇安裝的是apache,就沒有9000

windows虛擬環境中建立Django專案建立虛擬環境,安裝virtualenv,安裝Django,建立專案

一、建立虛擬環境   pip install virtualenv1 要使用Django,首先要建立一個虛擬工作環境。我們先為專案建立一個資料夾learn,在資料夾中開啟命令列(shift+右擊),來建立另一個虛擬環境。   如果使用的是python 3,可使

語音識別工具Kaldi環境配置及安裝手冊更新加強版

一、 安裝作業系統 1. 下載Ubuntu 14.04版本 注:強烈不建議下載比較新的版本,首先不能保證穩定性及相容性;其次,太新的版本出了問題都沒辦法google。另外,不要手賤的點更新之類的,否則

MAC系統Sublime Text3 配置Python3詳細教程親測有效

     這段時間由於想要學習Python,看到了有人推薦sublime text3這一款簡潔的編輯器,便下載來試一下。由於學習的是Python3,在這款軟體裡面是不包含的,因此環境需要再自己配置一遍,在網上看了許多的教程,苦苦沒有找到一個有效的,今天看書的時候才發現了正確的

win 10 + archlinux 雙系統安裝BTRFS檔案系統配置、美化----安裝桌面環境配置和基本美化xfce4+lightdm

接著上一篇的講,當你安裝完系統之後,你會發現,開機後仍然是命令列介面。步驟如下:     登入系統,輸入  root  ,  然後敲擊 回車 ,     首先,你需要執行如下命令進行有線連線的

OpenCV3.2.0+VS2017環境配置與常見問題鉅細坑爹版

安裝 常見問題 題外話:首先,配環境一定要有耐心。。。 本部落格是本小白第一次裝OpenCV成功後第一時間整理髮布。用的是剛下載好的OpenCV3.2.0版,用x64編譯器Debug執行(當然Release差不多),未經過cmake編譯

.React-Native學習之Window環境搭建環境配置

一.安裝JDK       1.從Java官網下載JDK並安裝。 也可以從百度雲下載x64版本       2.安裝成功可以用java -version檢視版本資訊       3. 配置環境變數   JAVA_HOME=C:\Program Files\Java\

linux安裝jdk 詳細步驟條命令即可安裝

作為Java開發人員,在Linux下安裝一些開發工具是必備技能,本文以安裝jdk為例,詳細記錄了每一步的操作命令,以供參考。 第一種方法 只需要一條命令就可以安裝jdk: yum install java-1.8.0-openjdk* -y執行了這條命令不需要配

Maven環境配置及簡單使用

Maven環境變數配置 配置Maven前先從官網下載相關版本,Maven下載地址:http://maven.apache.org/download.cgi,筆者使用最新版本apache-mave

由linux命令列命令引數前的-和兩橫--的區別而得知的

摘自:http://blog.csdn.net/songjinshi/article/details/6816776 在解釋這些區別之前我們先了解一下有關linux的背景知識,這個需要大家先認真看完就會對這些區別有更深入的瞭解,對linux也有更深的瞭解。 關於Sys

Ubuntu將vim配置為Python IDE

配置好了Django的環境,該把vim好好配置一下當做python的IDE來用。 在Windows下用慣了各種現成的工具,轉到Linux下,一下沒了頭緒……好歹google出一些別人的心得,折騰來折騰去,也算是把開發環境配好了。 1. 安裝完整的vim # apt-get install vim-gno

Linux的檔案操作命令、檔案顯示命令

1.cat命令 cat用來顯示檔案的內容。 1)一般格式 cat 【選項】 檔案 2)說明 一是顯示檔案內容;二是連線兩個或者多個檔案。 3)常用選項 -b 從1開始對所有非空輸出編號

ubuntu安裝及配置git的方法github

轉自:http://blog.csdn.net/tina_ttl安裝Git一個全新的ubunt系統,需要安裝Git(系統是不具有該工具的),方法如下: 在terminel中輸入如下命令:sudo apt-get install git git-core git-gui git-doc git-svn git-

Android鎖屏或滅屏狀態,快速按兩次音量鍵實現抓拍功能,Framework層實現

    WindowManagerService迴圈讀取下面按鍵訊息並分發給視窗,在訊息分發前會在PhoneWindowManager.interceptKeyBeforeQueueing方法中進行訊息的過濾。因此該實現方式為在訊息分發前的interceptKeyBeforeQueueing方法中監聽當前按

windowsC++編譯配置hiredis的方法VS2017

前言 最近在學習redis的使用,以及在windows下通過C++連線redis伺服器進行操作。在參考了幾篇部落格,又自己處理許多編譯錯誤的問題,終於將hiredis客戶端配置成功了,特此記錄,方便檢視。 開始 環境說明 在這