• <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
            <2025年7月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            常用鏈接

            留言簿(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   管理


            麻豆亚洲AV永久无码精品久久 | 男女久久久国产一区二区三区 | 亚洲狠狠婷婷综合久久蜜芽| 国产欧美久久久精品影院| 中文字幕乱码久久午夜| 精品一区二区久久久久久久网站| 精品午夜久久福利大片| 欧美亚洲国产精品久久久久| 久久99精品久久久久久动态图| 久久精品国产WWW456C0M| 亚洲伊人久久大香线蕉综合图片| 99国内精品久久久久久久| 麻豆av久久av盛宴av| 欧美伊香蕉久久综合类网站| 久久国产劲爆AV内射—百度| 国产A级毛片久久久精品毛片| 国内精品久久久久影院亚洲| 热久久这里只有精品| 久久精品国产亚洲av麻豆小说| 久久久久亚洲精品无码网址| 国产精品一久久香蕉国产线看观看| 无码8090精品久久一区| 99久久无码一区人妻| 99国产精品久久| 麻豆成人久久精品二区三区免费| 四虎久久影院| 亚洲精品第一综合99久久| 久久嫩草影院免费看夜色| 伊人久久精品线影院| 久久99热只有频精品8| 欧美精品久久久久久久自慰| 国产成人综合久久精品红| 欧美久久一级内射wwwwww.| 精品无码久久久久久久久久| 狠狠狠色丁香婷婷综合久久俺| 久久精品人人槡人妻人人玩AV| 无码人妻久久一区二区三区免费丨 | 亚洲国产精品综合久久一线| 久久精品国产黑森林| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | av无码久久久久久不卡网站|