• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 29  文章 - 13  trackbacks - 0
            <2006年10月>
            24252627282930
            1234567
            891011121314
            15161718192021
            22232425262728
            2930311234

            常用鏈接

            留言簿(1)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            相冊(cè)

            收藏夾

            c++

            Linux

            Tools

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            TextureApp2.JPG


            點(diǎn)此下載源文件

            /*
            MainApp.hpp
            */
            #ifndef MAINAPP_HPP
            #define MAINAPP_HPP
            #include <GL/gl.h>
            #include <SDL/SDL.h>

            #define ImageWidth 64
            #define ImageHeight 64

            class MainApp
            {
            public:
            ??? MainApp();
            ??? ~MainApp();
            ??? void loop();???
            ??? void quit();???
            ???
            private:???
            ??? void initGL();
            ??? void initTexture();
            ??? void makeImage();
            ??? void destroyGL();
            ??? void onKeyDown(const SDL_Event &event);
            ??? void draw();
            ??? bool running;
            ??? GLubyte Image[ImageWidth][ImageHeight][3];
            };

            #endif


            /*
            MainApp.cpp
            */
            #include <GL/gl.h>
            #include <SDL/SDL.h>
            #include "MainApp.hpp"

            MainApp::MainApp():running(true)
            {
            ?? ?initGL();
            }
            MainApp::~MainApp()
            {
            ?? ?destroyGL();
            }

            void MainApp::initGL()
            {
            ?? ?SDL_Init(SDL_INIT_VIDEO);
            ?? ?SDL_SetVideoMode(600,300,16,SDL_OPENGL);
            ?? ?glClearColor(0,0,0,0);
            ?? ?initTexture();
            }

            /* 創(chuàng)建紋理 */
            void MainApp::makeImage(void)
            {
            ??? int i, j, r,g,b;
            ??? for (i = 0; i < ImageWidth; i++)
            ?? ?{
            ?? ??? ?for (j = 0; j < ImageHeight; j++)
            ?? ??? ?{
            ?? ??????? r=(i*j)%255;
            ?? ??? ???? g=(4*i)%255;
            ?????? ??? ?b=(4*j)%255;
            ?? ???????? Image[i][j][0] = (GLubyte) r;
            ?????? ??? ?Image[i][j][1] = (GLubyte) g;
            ?? ??? ???? Image[i][j][2] = (GLubyte) b;
            ?? ??? ?}
            ??? }
            }

            void MainApp::initTexture()
            {
            ?? ?makeImage();
            ?/*? 定義紋理 */
            ??? glTexImage2D(GL_TEXTURE_2D, 0, 3, ImageWidth,
            ??? ImageHeight, 0, GL_RGB, GL_UNSIGNED_BYTE,
            ??? &Image[0][0][0]);
            ? /*? 控制濾波 */
            ??? glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
            ?? glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
            ??? glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
            ??? glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
            /*? 說(shuō)明映射方式*/
            ?? glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
            /*? 啟動(dòng)紋理映射 */
            ??? glEnable(GL_TEXTURE_2D);
            }

            void MainApp::destroyGL()
            {
            ?? ?SDL_Quit();
            }
            void MainApp::loop()
            {
            ?? ?SDL_Event event;
            ?? ?while(running)
            ?? ?{
            ?? ??? ?while(SDL_PollEvent(&event))
            ?? ??? ?{
            ?? ??? ??? ?switch(event.type)
            ?? ??? ??? ?{
            ?? ??? ??? ?case SDL_KEYDOWN:
            ?? ??? ??? ??? ?onKeyDown(event);
            ?? ??? ??? ??? ?break;
            ?? ??? ??? ?}
            ?? ??? ?}
            ?? ??? ?SDL_Delay(50);
            ?? ??? ?draw();
            ?? ?}
            }
            void MainApp::quit()
            {
            ?? ?running=false;
            }
            void MainApp::onKeyDown(const SDL_Event &event)
            {
            ?? ?switch(event.key.keysym.sym)
            ?? ?{
            ?? ?case SDLK_ESCAPE:
            ?? ??? ?quit();
            ?? ?}
            }
            void MainApp::draw()
            {
            ?? ?glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
            ?? ?glBegin(GL_QUADS);
            ?? ??? ?glColor3f(1,1,1);
            ?? ??? ?glTexCoord2f(0,0);glVertex3f(-0.5,-0.5,-0.5);
            ?? ??? ?glTexCoord2f(0,1);glVertex3f(-0.5,0.5,-0.5);
            ?? ??? ?glTexCoord2f(1,1);glVertex3f(0.5,0.5,0.5);
            ?? ??? ?glTexCoord2f(1,0);glVertex3f(0.5,-0.5,0.5);
            ?? ?glEnd();
            ?? ?
            ?? ?SDL_GL_SwapBuffers();
            }

            int main(int argc,char* argv[])
            {
            ?? ?MainApp app;
            ?? ?app.loop();?? ?
            }

            posted on 2006-10-17 18:42 四海 閱讀(1412) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            99re久久精品国产首页2020| 国产99久久久久久免费看| 久久亚洲国产成人影院网站| 理论片午午伦夜理片久久| 2021最新久久久视精品爱| 77777亚洲午夜久久多喷| 精品久久久久香蕉网| 国产精品激情综合久久| 久久国产亚洲精品| 久久精品国产亚洲沈樵| 欧美精品福利视频一区二区三区久久久精品| 久久综合九色综合欧美就去吻| 亚洲国产精品一区二区久久hs| 青青草原综合久久| 欧美黑人激情性久久| 伊人久久综在合线亚洲2019 | 香蕉久久av一区二区三区| 97久久精品人妻人人搡人人玩| 91精品国产91久久久久久| 亚洲国产精品无码久久| 久久久无码精品午夜| 国产精品久久久久AV福利动漫| 无码国内精品久久人妻麻豆按摩| 九九99精品久久久久久| 久久人人爽人人爽人人片AV高清 | 狠狠色综合网站久久久久久久| 国产精品久久久久a影院| 日韩一区二区久久久久久 | 国产91久久综合| 欧美一区二区三区久久综| 免费精品久久久久久中文字幕| 青青草国产成人久久91网| 国产毛片欧美毛片久久久| 久久中文字幕视频、最近更新 | 色狠狠久久综合网| 久久夜色撩人精品国产| 婷婷久久综合九色综合98| 久久精品国产精品亚洲精品| 久久精品国产91久久麻豆自制| 99久久精品日本一区二区免费| 亚洲中文字幕无码久久2017|