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

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

?? mesh.cpp

?? 國外游戲開發者雜志2003年第七期配套代碼
?? CPP
字號:
#include "framework.h"
#include "mesh.h"
#include "binary_file_stuff.h"

/*
  This file contains support functions for the Triangle_List_Mesh:
  initialization, loading/saving, etc.
*/
const int TRIANGLE_LIST_MESH_FILE_VERSION = 2;

Triangle_List_Mesh::Triangle_List_Mesh() {
    vertices = NULL;
    uvs = NULL;
    tangent_frames = NULL;
    indices = NULL;
    canonical_vertex_map = NULL;
    triangle_list_info = NULL;
    material_info = NULL;
    name = NULL;
    user_data = NULL;
    normals = NULL;

    index_buffer = 0;
    vertex_buffer = 0;
}

Triangle_List_Mesh::~Triangle_List_Mesh() {
    delete [] vertices;
    delete [] material_info;  // XXX Names are currently leaked, fix this for a real app!
    delete [] name;
}


void copy_material_info(Mesh_Material_Info *dest, Mesh_Material_Info *src) {
    // XXX If we are to become careful about allocations here, this will have to change.
    dest->name = app_strdup(src->name);
    dest->texture_index = src->texture_index;
}



void Triangle_List_Mesh::allocate_materials(int n) {
    num_materials = n;
    material_info = new Mesh_Material_Info[n];
    int i;
    for (i = 0; i < num_materials; i++) material_info[i].texture_index = -1;
}


void Triangle_List_Mesh::allocate_geometry(int _num_vertices, int _num_faces) {
    num_vertices = _num_vertices;
    num_faces = _num_faces;
    
    vertices = new Vector3[num_vertices];
    uvs = new Vector2[num_vertices];
    tangent_frames = new Quaternion[num_vertices];
    canonical_vertex_map = new int[num_vertices];

    num_indices = num_faces * 3;
    indices = new int[num_indices];
}




Triangle_List_Mesh *load_triangle_list_mesh(FILE *f) {
    bool error = false;

    int file_version;
    get_u2b(f, &file_version, &error);
    if (error) return NULL;

    int num_vertices;
    int num_faces;
    int num_materials;
    int num_triangle_lists;
    int num_indices;

    get_u4b(f, &num_vertices, &error);
    get_u4b(f, &num_faces, &error);
    get_u4b(f, &num_materials, &error);
    get_u4b(f, &num_triangle_lists, &error);
    get_u4b(f, &num_indices, &error);

    int is_animatable;
    int use_tangent_frames;
    get_u1b(f, &is_animatable, &error);
    get_u1b(f, &use_tangent_frames, &error);

    if (error) return NULL;

    // We're not loading animations this time, so we ignore the
    // value of 'is_animatable'.

    Triangle_List_Mesh *mesh = new Triangle_List_Mesh();

    // @Optimization: Allocate all this stuff in one block.
    assert(num_faces * 3 == num_indices);
    mesh->allocate_geometry(num_vertices, num_faces);
    mesh->allocate_materials(num_materials);

    mesh->num_triangle_lists = num_triangle_lists;

    mesh->triangle_list_info = new Triangle_List_Info[mesh->num_triangle_lists];

    if (!use_tangent_frames) {
        // @Speed: If we are loading a lot of tangent-frameless
        // meshes, then maybe we shouldn't allocate these in 
        // the first place.
        delete [] mesh->tangent_frames;
        mesh->tangent_frames = NULL;
    }

    mesh->name = NULL;
    mesh->user_data = NULL;

    int i;
    for (i = 0; i < mesh->num_materials; i++) {
        Mesh_Material_Info *info = &mesh->material_info[i];
        info->texture_index = -1;
        get_string(f, &info->name, &error);
        if (error) return NULL; // Leak!
    }

    for (i = 0; i < mesh->num_vertices; i++) {
        Vector3 *pos = &mesh->vertices[i];
        get_vector3(f, pos, &error);
    }
    
    if (error) return NULL; // Leak!

    for (i = 0; i < mesh->num_vertices; i++) {
        Vector2 *uv = &mesh->uvs[i];
        get_f32(f, &uv->x, &error);
        get_f32(f, &uv->y, &error);
    }

    if (error) return NULL; // Leak!

    if (use_tangent_frames) {
        for (i = 0; i < mesh->num_vertices; i++) {
            Quaternion *frame = &mesh->tangent_frames[i];
            get_f32(f, &frame->w, &error);
            get_f32(f, &frame->x, &error);
            get_f32(f, &frame->y, &error);
            get_f32(f, &frame->z, &error);
        }
    }

    for (i = 0; i < mesh->num_vertices; i++) {
        get_u4b(f, &mesh->canonical_vertex_map[i], &error);
    }

    if (error) return NULL; // Leak!

    for (i = 0; i < mesh->num_indices; i++) {
        int index;
        get_u4b(f, &index, &error);
        mesh->indices[i] = index;
    }

    if (error) return NULL; // Leak!

    for (i = 0; i < mesh->num_triangle_lists; i++) {
        Triangle_List_Info *info = &mesh->triangle_list_info[i];
        get_u4b(f, &info->material_index, &error);
        get_u4b(f, &info->num_vertices, &error);
        get_u4b(f, &info->start_of_list, &error);
    }

    if (error) return NULL; // Leak!

    return mesh;  // We got it!
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久国产精品99久久人人澡| 蜜桃精品视频在线| 欧美巨大另类极品videosbest | av成人动漫在线观看| 中文欧美字幕免费| 日韩欧美国产一区在线观看| 亚洲超丰满肉感bbw| 91 com成人网| 欧美日韩精品一区二区在线播放| 日韩一本二本av| 狠狠色综合播放一区二区| 国产精品国产a| 国产在线精品一区二区不卡了| 亚洲国产另类av| 亚洲一区av在线| 蜜臀av亚洲一区中文字幕| 蜜臀99久久精品久久久久久软件 | 国产精品色哟哟| 国产精品国产三级国产有无不卡| 久久99国内精品| 黄色资源网久久资源365| 成人18视频日本| 欧美三级蜜桃2在线观看| 99国产精品一区| 欧美揉bbbbb揉bbbbb| 日韩精品一区二区三区三区免费 | 亚洲1区2区3区4区| 在线看不卡av| 91精品国模一区二区三区| 精品久久国产字幕高潮| 国产女人18毛片水真多成人如厕 | 欧美精品一区二区蜜臀亚洲| 国产欧美日本一区视频| 亚洲伊人伊色伊影伊综合网 | 久久婷婷久久一区二区三区| 国产欧美一区二区精品性色| 亚洲人精品午夜| 日韩精品每日更新| 99精品视频一区二区| 正在播放一区二区| 国产精品久久777777| 人人精品人人爱| 不卡的av电影在线观看| 欧美夫妻性生活| 中文字幕 久热精品 视频在线| 亚洲五码中文字幕| 成人午夜看片网址| 欧美一区二区三区小说| 亚洲男同性恋视频| 国产米奇在线777精品观看| 在线一区二区观看| 国产欧美在线观看一区| 免费观看久久久4p| 欧美日韩久久不卡| 亚洲色图一区二区| 成人av在线资源网| 精品国产伦一区二区三区观看体验 | 热久久免费视频| 91蝌蚪porny| 国产清纯白嫩初高生在线观看91 | 精品国产91洋老外米糕| 亚洲高清免费视频| 婷婷开心激情综合| 欧美写真视频网站| 性做久久久久久久久| 久久久噜噜噜久噜久久综合| 国产精品99久久不卡二区| 亚洲欧美日韩国产综合在线| 欧美一区二区在线免费播放| 懂色av一区二区三区蜜臀| 夜夜精品视频一区二区| 久久久久久久久久电影| 欧美专区在线观看一区| 91亚洲精品久久久蜜桃| 日本特黄久久久高潮| 国产精品高潮久久久久无| 精品区一区二区| 色就色 综合激情| 欧美午夜精品一区二区三区| 国内精品国产成人| 亚洲国产日韩av| 精品国精品国产尤物美女| 欧美三级一区二区| 亚洲mv在线观看| 色综合欧美在线| 国产精品1区二区.| 麻豆专区一区二区三区四区五区| 一区二区三区不卡在线观看| 久久久美女毛片| 精品一区二区三区在线观看| 亚洲乱码国产乱码精品精可以看| 久久久另类综合| 国产日产精品一区| 99久久99久久综合| 天堂va蜜桃一区二区三区| 亚洲视频 欧洲视频| 99精品热视频| 亚洲午夜久久久久久久久电影网| 欧美日韩一区二区不卡| 奇米四色…亚洲| 久久久久久久久久久久久夜| a级高清视频欧美日韩| 91精品国产入口| 最近日韩中文字幕| 亚洲裸体xxx| 麻豆91在线观看| 99v久久综合狠狠综合久久| 色诱亚洲精品久久久久久| 欧美艳星brazzers| 精品久久国产老人久久综合| 国产精品家庭影院| 国产成人综合在线观看| 在线观看av不卡| 中文字幕在线不卡| 青青国产91久久久久久| 99久久精品免费观看| 精品少妇一区二区三区视频免付费| 欧美国产乱子伦| 毛片av一区二区| 欧美人妇做爰xxxⅹ性高电影 | 精品国产百合女同互慰| 久久免费精品国产久精品久久久久| 亚洲三级在线看| 成人app在线观看| 91在线播放网址| 欧美日韩成人高清| 欧美一级久久久久久久大片| 国产精品理伦片| 国产电影一区二区三区| 1000精品久久久久久久久| 综合激情成人伊人| 中文字幕成人av| 99久久综合精品| 秋霞影院一区二区| 91精品婷婷国产综合久久性色| 粉嫩高潮美女一区二区三区| 蜜臂av日日欢夜夜爽一区| 日本一区二区免费在线 | 不卡影院免费观看| 看国产成人h片视频| 亚洲免费伊人电影| 国产欧美日韩另类一区| 亚洲日本免费电影| 一本大道久久a久久精二百| 日韩一级黄色片| 日韩va亚洲va欧美va久久| 欧美日韩精品欧美日韩精品| 久久精品国产在热久久| 欧美一级二级三级蜜桃| 免费高清成人在线| 精品免费视频.| 欧美激情在线观看视频免费| 不卡一区在线观看| 亚洲综合一区二区三区| 色婷婷久久久综合中文字幕 | 色综合网色综合| 亚洲成人久久影院| 在线观看国产一区二区| 午夜精品久久久久久久| 日韩精品影音先锋| bt7086福利一区国产| 亚洲v中文字幕| 亚洲欧洲中文日韩久久av乱码| 99v久久综合狠狠综合久久| 视频在线观看一区| 欧美国产日产图区| 日韩免费高清视频| 欧美一区二区三区视频在线观看 | 精品视频123区在线观看| 日韩欧美国产综合| 国产一区二区在线观看免费| 国产日韩欧美精品综合| 欧美日韩精品一区二区三区| 成人午夜在线视频| 国产精品色婷婷久久58| 成人小视频在线观看| 一片黄亚洲嫩模| 亚洲午夜羞羞片| 一区二区三区电影在线播| 亚洲精品成a人| 久久免费午夜影院| 国产亚洲欧美色| 亚洲欧美乱综合| 无码av中文一区二区三区桃花岛| 五月激情综合网| 久久精品av麻豆的观看方式| 美女网站色91| 国产成人午夜视频| 极品美女销魂一区二区三区| 亚洲综合免费观看高清完整版| 欧美一区二区在线免费播放| 日韩欧美中文字幕精品| 欧洲精品一区二区| 欧美无人高清视频在线观看| 欧美影视一区在线| 久久综合久久综合九色| 精品日韩av一区二区| 久久亚洲捆绑美女| 91.麻豆视频| 成人免费视频网站在线观看|