亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? face.hpp

?? 一個3D桌面的實現源碼
?? HPP
字號:
//  ----------------------------------------------------------////  Copyright (C) 2002 Brad Wasson <bard@systemtoolbox.com>////  This file is part of 3ddesktop.////  3ddesktop is free software; you can redistribute it and/or modify it//  under the terms of the GNU General Public License as published by//  the Free Software Foundation; either version 2, or (at your option)//  any later version.////  3ddesktop is distributed in the hope that it will be useful, but//  WITHOUT ANY WARRANTY; without even the implied warranty of//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the//  GNU General Public License for more details.////  You should have received a copy of the GNU General Public License//  along with 3ddesktop; see the file COPYING.   If not, write to//  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.//#ifndef _FACE_HPP#define _FACE_HPP#include <GL/gl.h>#include <GL/glu.h>#include "util.h"#include "config.hpp"extern Config *cfg;class Point {public:    vertex_t v;    Point (float _x = 0, float _y = 0, float _z = 0) {        v[0] = _x; v[1] = _y; v[2] = _z; v[3] = 1;    }    void set (float _x, float _y, float _z) {        v[0] = _x; v[1] = _y; v[2] = _z; v[3] = 1;    }};class Face {public:    Point topleft, topright, bottomleft, bottomright;        Point normal;    GLuint texture_id;    float transparency;    short active;    uint clist;    int wireframe;    Face (int wf = -1) {        memset (&topleft, 0, sizeof(Point));        memset (&topright, 0, sizeof(Point));        memset (&bottomleft, 0, sizeof(Point));        memset (&bottomright, 0, sizeof(Point));        memset (&normal, 0, sizeof(Point));        texture_id = (GLuint)-1;        transparency = .5;        active = 0;        clist = (uint)-1;        wireframe = wf;    }        void calculate_normal () {        // tl ---- tr        //         |        //         br        // calculate normal        float x1 = topleft.v[0] - topright.v[0];        float y1 = topleft.v[1] - topright.v[1];        float z1 = topleft.v[2] - topright.v[2];        float x2 = bottomright.v[0] - topright.v[0];        float y2 = bottomright.v[1] - topright.v[1];        float z2 = bottomright.v[2] - topright.v[2];        normal.v[0] = (y1 * z2) - (y2 * z1);	normal.v[1] = (z1 * x2) - (z2 * x1);	normal.v[2] = (x1 * y2) - (x2 * y1);        // normalize normal ;)         float len = (float)sqrt(normal.v[0] * normal.v[0] +                                 normal.v[1] * normal.v[1] +                                 normal.v[2] * normal.v[2]);        normal.v[0] /= len;        normal.v[1] /= len;        normal.v[2] /= len;    }    void set_list (uint i) {        clist = i;    }    void set_corners(Point tl,                      Point tr,                      Point bl,                      Point br)    {        topleft = tl;        topright = tr;        bottomleft = bl;        bottomright = br;                calculate_normal ();    }    void set_active () {        active = 1;    }    void set_transparency (float t) {        transparency = t;    }    void set_texture_id (GLuint tid) {        texture_id = tid;    }    GLuint get_texture_id() {        return texture_id;    }    GLuint *get_texture_id_ptr() {        return &texture_id;    }    void render (void) {        int use_texture = 1;        if (texture_id != (GLuint)-1) {            glEnable(GL_TEXTURE_2D);            glBindTexture(GL_TEXTURE_2D, texture_id);   // 2d texture (x and y size)            //glColorMaterial(GL_FRONT_AND_BACK,GL_DIFFUSE);            //glEnable(GL_COLOR_MATERIAL);            glColor4f(transparency, transparency, transparency, transparency);            //msgout(DEBUG, "======== t=%f\n", transparency);            glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);        } else {            // no digit or screenshot so show gray color            glDisable(GL_TEXTURE_2D);            use_texture = 0;            float v = 0.3;            switch (cfg->options->frame_color) {            case COLOR_RED:                glColor4f(v, 0, 0, 1.0);                 break;            case COLOR_GREEN:                glColor4f(0, v, 0, 1.0);                break;            case COLOR_BLUE:                glColor4f(0, 0, v, 1.0);                break;            case COLOR_LIGHTBLUE:                glColor4f(0, v, v, 1.0);                break;            case COLOR_GRAY:                glColor4f(v, v, v, 1.0);                break;            case COLOR_WHITE:                glColor4f(1.0, 1.0, 1.0, 1.0);                break;            case COLOR_PURPLE:                glColor4f(v, 0, v, 1.0);                break;            case COLOR_YELLOW:                glColor4f(v, v, 0, 1.0);                break;            default: // gray                glColor4f(v, v, v, 1.0);                break;            }            if (wireframe == 1 ||                (wireframe == -1 && cfg->options->use_wireframe))                glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);                        glLineWidth (2);            glDisable (GL_LIGHTING);        }        if (clist != (uint)-1) {            glCallList (clist);        } else {            glBegin(GL_QUADS);            glNormal3fv( normal.v );            glTexCoord2f (0.0f, 0.0f);            glVertex3fv(topleft.v);            glTexCoord2f (1.0f, 0.0f);            glVertex3fv(topright.v);            glTexCoord2f (1.0f, 1.0f);            glVertex3fv(bottomright.v);            glTexCoord2f (0.0f, 1.0f);            glVertex3fv(bottomleft.v);            glEnd();        }        glEnable (GL_LIGHTING);        // restore to fill        glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);    }    void load_texture_data (int texture_size, unsigned char *data) {        if (texture_id == (GLuint)-1)            glGenTextures(1, &texture_id);        glBindTexture(GL_TEXTURE_2D, texture_id);                   glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER, MIN_FILTER);        glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER, MAX_FILTER);                gluBuild2DMipmaps(GL_TEXTURE_2D, 3, texture_size, texture_size, GL_RGBA, GL_UNSIGNED_BYTE, data);    }};#endif // _FACE_HPP

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二三区| 91精品国产综合久久久蜜臀图片| 石原莉奈在线亚洲二区| 有码一区二区三区| 亚洲丰满少妇videoshd| 亚洲sss视频在线视频| 日韩精品福利网| 日韩国产成人精品| 久久99久久99小草精品免视看| 蜜臀久久久99精品久久久久久| 国产在线视视频有精品| 国产精品一二三四区| 成人动漫视频在线| 色偷偷久久人人79超碰人人澡| 在线免费观看一区| 91精品国产综合久久久久久 | 国产欧美精品日韩区二区麻豆天美| 欧美电视剧免费全集观看| 久久精品欧美一区二区三区不卡 | 欧美成人三级在线| 26uuu成人网一区二区三区| 久久精品免费在线观看| 中文字幕中文在线不卡住| 亚洲午夜久久久久| 极品美女销魂一区二区三区| 国产不卡视频在线观看| 欧洲精品视频在线观看| 欧美大片一区二区三区| 成人欧美一区二区三区1314| 亚洲6080在线| 成人听书哪个软件好| 欧美午夜视频网站| 久久久久久久久久久99999| 亚洲欧美一区二区三区孕妇| 午夜成人免费电影| youjizz国产精品| 欧美一区二区福利视频| 1000精品久久久久久久久| 日本91福利区| 在线精品视频免费播放| 日本一区二区久久| 精品一区二区日韩| 欧美日韩在线播放三区| 欧美一区二区三区视频在线观看| 久久久久久久久久看片| 国产一区二区三区四区五区入口 | 国产91精品欧美| 91精品国产综合久久精品麻豆| 国产日韩欧美不卡在线| 日本视频中文字幕一区二区三区| 成人黄色av电影| 精品国产免费一区二区三区四区| 综合av第一页| 福利电影一区二区| 精品久久久久久亚洲综合网| 午夜av区久久| 欧美视频日韩视频在线观看| 亚洲理论在线观看| 不卡的av中国片| 国产欧美一区二区三区沐欲| 久久成人麻豆午夜电影| 欧美日本乱大交xxxxx| 国产精品成人免费精品自在线观看| 国产在线精品免费av| 欧美一级理论片| 天天免费综合色| 欧美群妇大交群中文字幕| 一区二区三区四区av| 99久久精品国产一区| 国产精品久久久久久久岛一牛影视 | 中文字幕免费不卡| 麻豆精品新av中文字幕| 国产美女久久久久| 9l国产精品久久久久麻豆| 国产乱子伦视频一区二区三区| 国产精品久久久久久亚洲伦| 成人免费毛片片v| 成人精品免费视频| 成a人片亚洲日本久久| 国产激情一区二区三区桃花岛亚洲| 久久99热国产| 日韩欧美的一区| 久久精品国产精品亚洲精品| 欧美久久高跟鞋激| 免费xxxx性欧美18vr| 日韩免费高清av| 国产电影精品久久禁18| 国产精品每日更新在线播放网址| eeuss鲁片一区二区三区在线看| 国产欧美精品一区| 97超碰欧美中文字幕| 亚洲国产中文字幕在线视频综合| 欧美日韩国产免费一区二区| 久久精品国产精品亚洲红杏| 久久久av毛片精品| 91年精品国产| 免费日本视频一区| 欧美激情综合网| 欧日韩精品视频| 精品一区二区三区av| 欧美韩日一区二区三区四区| 色综合中文字幕| 免费在线视频一区| 国产精品天干天干在观线| 色狠狠一区二区三区香蕉| 天天av天天翘天天综合网| 久久老女人爱爱| 在线观看日韩国产| 国产精品99久久久久久似苏梦涵| 亚洲少妇最新在线视频| 91精品国产综合久久精品性色| 国产成a人亚洲精品| 亚洲bt欧美bt精品| 国产精品不卡在线观看| 91精品国产91久久久久久一区二区| 国产传媒一区在线| 午夜一区二区三区视频| 国产精品久久久久三级| 日韩午夜三级在线| 色综合色狠狠天天综合色| 韩国一区二区在线观看| 亚洲一区二区欧美| 中文字幕一区二区三区四区不卡 | 欧美日产在线观看| 懂色av中文字幕一区二区三区| 午夜精品国产更新| 亚洲免费观看高清完整版在线观看熊| 日韩一级大片在线观看| 欧美自拍偷拍午夜视频| 成人少妇影院yyyy| 精品夜夜嗨av一区二区三区| 亚洲电影你懂得| 亚洲精品国产一区二区精华液 | 亚洲综合成人网| 国产日产欧美一区二区视频| 9191精品国产综合久久久久久| av午夜精品一区二区三区| 国产精品77777| 精品一区二区在线播放| 日本欧美久久久久免费播放网| 亚洲少妇中出一区| 亚洲天堂2016| 亚洲精品免费播放| 亚洲另类在线制服丝袜| 亚洲日本电影在线| 日韩美女视频19| 亚洲人被黑人高潮完整版| 一区在线中文字幕| 亚洲天堂av一区| 一区二区不卡在线视频 午夜欧美不卡在| 久久精品人人爽人人爽| 欧美激情综合五月色丁香 | 一区二区三区欧美在线观看| 国产精品日韩精品欧美在线| 欧美国产日韩精品免费观看| 国产婷婷色一区二区三区在线| 久久久99精品免费观看不卡| 久久婷婷国产综合精品青草 | 不卡一区二区在线| 97精品超碰一区二区三区| 91蜜桃视频在线| 在线免费观看一区| 欧美一区二视频| 日韩免费观看2025年上映的电影| 欧美videossexotv100| 久久亚洲影视婷婷| 中文子幕无线码一区tr | 欧美日韩视频在线观看一区二区三区| 在线视频你懂得一区| 欧美色图在线观看| 91精品国产91久久久久久一区二区 | 欧美视频完全免费看| 欧美精品1区2区3区| 精品国产乱码久久久久久免费| 久久精品人人做人人综合 | 欧美一级高清片| 2024国产精品| 中文字幕视频一区| 天天综合日日夜夜精品| 国产精品91一区二区| 欧美系列日韩一区| 欧美精品一区二区三区在线播放 | 天天亚洲美女在线视频| 国产精品99久久不卡二区| 在线视频亚洲一区| 久久女同精品一区二区| 一区二区三区中文字幕| 经典三级一区二区| 色悠悠久久综合| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 99久久综合精品| 91精品国产高清一区二区三区蜜臀 | 成人免费视频一区| 欧美精品久久一区二区三区| 久久精品视频免费观看| 日韩精品电影一区亚洲| av在线播放成人| 久久伊人蜜桃av一区二区| 亚洲精品高清在线观看| 国产成人精品综合在线观看|