Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Xors3D

Xors3D Графический движок с поддержкой DirectX9

Ответ
 
Опции темы
Старый 10.05.2012, 01:14   #1
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
цпп проблемы

Сочинил я класс. Работает.
А когда в другом классе создаю поле с этим классом но статическим оно валится при инициализации этого поля
tris_master universall_keeper::manager;

Уважаемые телепаты, почему? Час смотрел на код, вроде не должно.

struct tris{
int surf;
int tris_number;
int v0;
int v1;
int v2;

};

class tris_master{
public:
Handle mesh;
Handle* surf;
int tris_whole;
int tris_in;

tris* master;
///////////////////////////////////////////////////////
tris_master(){


    //создаю трисы
    tris_in=0;
    mesh=xCreateMesh();

    surf=new Handle[10];
        for(int i=0;i<10;i++){
            surf[i]=xCreateSurface(mesh);
            for(int j=0;j<20000;j++){
                xAddVertex(surf[i],0,0,0);
                xAddVertex(surf[i],0,1,0);
                xAddVertex(surf[i],1,0,0);
                xAddTriangle(surf[i],j*3,j*3+1,j*3+2);
                tris_whole++;}
        }
    tris_in=tris_whole-1;

    //считаю трисы
    int tris_quantity=0;
    int number=xCountSurfaces(mesh);
    for(int i=0;i<number;i++){
        tris_quantity=tris_quantity+xCountTriangles(surf[i]);}

    //сохраняю данные
    master=new tris[tris_quantity];
    int m=0;
    for(int i=0;i<number;i++){
        int tris_number=xCountTriangles(surf[i]);
        for(int j=0;j<tris_number;j++){
        master[m].surf=i;
        master[m].tris_number=j;
        master[m].v0=xTriangleVertex(surf[i],j,0);
        master[m].v1=xTriangleVertex(surf[i],j,1);
        master[m].v2=xTriangleVertex(surf[i],j,2);
        m++;
        }}
    //collaspse all tris
    for(int i=0;i<m;i++){

    xVertexCoords(surf[master[i].surf],master[i].v0,0,0,0);
    xVertexCoords(surf[master[i].surf],master[i].v1,0,0,0);
    xVertexCoords(surf[master[i].surf],master[i].v2,0,0,0);

    }

}
///////////////////////////////////////////////////////
tris give_tris(){
    if(tris_in>=1){
    tris result=master[tris_in];
    tris_in--;
    return result;
    }
    else{
    tris result=master[0];
    return result;
    }
}
////////////////////////////////////////////////////////
void give_back_tris(tris tris_number){
    tris_in++;
    master[tris_in]=tris_number;

    xVertexCoords(surf[tris_number.surf],tris_number.v0,0,0,0);
    xVertexCoords(surf[tris_number.surf],tris_number.v1,0,0,0);
    xVertexCoords(surf[tris_number.surf],tris_number.v2,0,0,0);

}
///////////////////////////////////////////////////////
tris locate_tris(float3 v0,float3 v1,float3 v2){
    //взять треугольник
    tris current_tris=give_tris();
    //поставить треугольник
    xVertexCoords(surf[current_tris.surf],current_tris.v0,v0.x,v0.y,v0.z);
    xVertexCoords(surf[current_tris.surf],current_tris.v1,v1.x,v1.y,v1.z);
    xVertexCoords(surf[current_tris.surf],current_tris.v2,v2.x,v2.y,v2.z);
    //отдать данные
    return current_tris;
}


};
(Offline)
 
Ответить с цитированием
Старый 10.05.2012, 15:06   #2
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: цпп проблемы

покажи где валится.
если как то так
class SomeClass
{
static tris_master master;
}
то статичные переменные инициализируются до main. когда движок еще не инициализирован.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
dsd (10.05.2012)
Старый 10.05.2012, 17:52   #3
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: цпп проблемы

Спасибо.

ЗЫ: Я и сам утром допер )
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 08:56.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com