• <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年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            常用鏈接

            留言簿(1)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            相冊

            收藏夾

            c++

            Linux

            Tools

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            TextureApp2.JPG


            點此下載源文件

            /*
            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();
            }

            /* 創建紋理 */
            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);
            /*? 說明映射方式*/
            ?? glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
            /*? 啟動紋理映射 */
            ??? 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 四海 閱讀(1405) 評論(0)  編輯 收藏 引用
            国产精品9999久久久久| 狠狠色婷婷久久一区二区| 久久久久夜夜夜精品国产| 久久久久无码精品| 久久婷婷五月综合成人D啪| av无码久久久久不卡免费网站| 国产精品久久久久乳精品爆| 久久久久久久久66精品片| 欧美丰满熟妇BBB久久久| 日本欧美国产精品第一页久久| 久久午夜福利无码1000合集| 久久久久夜夜夜精品国产| 一本大道久久香蕉成人网| 91性高湖久久久久| 伊人久久久AV老熟妇色| 久久免费视频一区| 色综合色天天久久婷婷基地| 色综合久久中文字幕无码| 欧美一级久久久久久久大片| 久久青青草原精品影院| 久久无码人妻一区二区三区午夜| 香蕉久久永久视频| 久久国产成人午夜AV影院| 91精品无码久久久久久五月天 | 亚洲国产成人久久综合一 | 99久久国产免费福利| 人妻无码中文久久久久专区| 亚洲?V乱码久久精品蜜桃 | 99久久做夜夜爱天天做精品| 久久免费观看视频| 久久综合九色综合欧美就去吻| 久久久久久免费一区二区三区| 久久久亚洲欧洲日产国码aⅴ | 久久丝袜精品中文字幕| 亚洲成色999久久网站| 久久精品视频免费| 成人国内精品久久久久影院VR| 色综合久久88色综合天天| 亚洲嫩草影院久久精品| 久久国产精品二国产精品| 久久亚洲AV无码西西人体|