PMG

Форумы по созданию игр
Текущее время: 14 июл 2026 15:09

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 59 ]  На страницу Пред.  1, 2, 3, 4
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: 08 сен 2006 23:58 
Не в сети
Постоянный

Зарегистрирован: 14 июн 2006 21:30
Сообщения: 53
Откуда: Из Сахары
Огромное спасибо, с нормалями разобрался - точнее нашел другой алгоритм.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 11 сен 2006 11:28 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
И какой интересно?

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 11 сен 2006 17:45 
Не в сети
Постоянный

Зарегистрирован: 14 июн 2006 21:30
Сообщения: 53
Откуда: Из Сахары
Ну, я решил не париться с Милкой вообще. Хочу сделать целиковый редактор карт. Разве что модели домов и всяких моделек того рода будут в милке сделаны и просто импортированы в редактор карт. Пока редактор в разработке, но уже может создавать полноценные простые карты (рельеф с тектурой на разные меши). Все пока на Visual C++ 6 делаю, по окончании перенесу на Borlan C++ Builder 6.0 - я заметил повышние производительности в Билдре относительно Вижуала при работе с двунаправленными и многомерными списками. Вообщем доведу редактор до конца, выложу.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 07 окт 2006 23:37 
Не в сети
Постоянный

Зарегистрирован: 14 июн 2006 21:30
Сообщения: 53
Откуда: Из Сахары
Появилась проблема. Не могу понять почему.

Я начал писать под Вижуал, все работает, добил класс до конца, пихаю в Борланд 6, все компилится, но вот проблема:

Цитата:
void SLLandscape::genMeshes(SLMesh *mesh, int x, int y)
{
if(x > mesh->x || y > mesh->y)
return;

SLMesh *r=NULL, *e=NULL;

int limit=x*y, sx, sy, jungle, wd, count=0;

SLVertex *vertex=new SLVertex [limit];
SLNormal *normal=new SLNormal [limit];

for(int i=0;i<mesh->x;i+=x-1)
{
for(int j=0;j<mesh->y;j+=y-1)
{
SLMesh *mesh0=new SLMesh;

char name[500];
sprintf(name, "mesh_%d_%d", count++, rand()%100);
int len=strlen(name);
mesh0->name=new char [len];
strcpy(mesh0->name, name);

sx=jungle=0;

for(int k=i;k<x+i;++k)
{
if(k >= mesh->x)
continue;

++sx; sy=0;

for(int l=j;l<y+j;++l)
{
if(l >= mesh->y)
continue;

++sy;

vertex[jungle]=mesh->vertex[k*mesh->y+l];
normal[jungle++]=mesh->normal[k*mesh->y+l];
}
}

mesh0->x=sx; mesh0->y=sy;

wd=sx*sy;

:( Вот на эти строчки динамически выделаемой памяти Борланд заостряет внимание - после нескольких успешных проходов цикла программа падает, ссылается на память, причем строго если wd < 121 && (mesh->x < 150 || mesh->y < 150). Если wd больше, то идет нормально. Главное что на Вижуале идет безупречно при любых wd. Копался в компиляторе, непомогло.

mesh0->vertex=new SLVertex [wd];
mesh0->normal=new SLNormal [wd];

/*
for(k=0;k<wd;++k)
{
mesh0->vertex[k]=vertex[k];
mesh0->normal[k]=normal[k];

mesh0->vertex[k].number=k;
}
*/

wd=0;

for(k=0;k<mesh0->x;++k)
{
for(int l=0;l<mesh0->y;++l)
{
int var=k*mesh0->y+l;

mesh0->vertex[var]=vertex[var];
mesh0->normal[var]=normal[var];
mesh0->vertex[var].texpoint[0]=(float)k;
mesh0->vertex[var].texpoint[1]=(float)l;
mesh0->vertex[var].number=wd++;
}
}

this->addMesh(&r, &e, mesh0);
this->genCube(mesh0);
this->genTriangles(mesh0);
}
}

delete [] vertex;
delete [] normal;

if(mesh->prew)
{
mesh->prew->next=r;
r->prew=mesh->prew;
}
else
{
this->mroot=r;
}

if(mesh->next)
{
mesh->next->prew=e;
e->next=mesh->next;
}
else
{
this->mend=e;
}

delete mesh;
}
[/img]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 08 окт 2006 21:07 
Не в сети
Постоянный

Зарегистрирован: 14 июн 2006 21:30
Сообщения: 53
Откуда: Из Сахары
Короче я тут подумал, что может быть написать DLL-ку, на Вижуале, а потом ее в Борланд, вот только как туда класс запихать, ведь в Вижуале COFF, а в Борланд держит только OMF...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 09 окт 2006 09:22 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Во-первых - зачем тебе Borland? Во-вторых, что конкретно не нравиться Borland? В третьих - не стоит засорять стек, во это определение char name[500]; стоит вынести вначало функции.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 09 окт 2006 17:32 
Не в сети
Постоянный

Зарегистрирован: 14 июн 2006 21:30
Сообщения: 53
Откуда: Из Сахары
Цитата:
во это определение char name[500]; стоит вынести вначало функции


Это короче временно и забыл убрать.

Посмотрите на смайлик в исходнике, там суть проблемы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 10 окт 2006 10:15 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
То бишь уже все нашел.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 10 окт 2006 20:10 
Не в сети
Постоянный

Зарегистрирован: 14 июн 2006 21:30
Сообщения: 53
Откуда: Из Сахары
Цитата:
То бишь уже все нашел.


Да, я нашел в чем причина, точнее, ГДЕ не пашет. Вопрос только почему... ведь на вижуале вообще все летает...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 11 окт 2006 09:23 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Может разные компиляторы по разному стек обрабатывают.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 14 окт 2006 22:19 
Не в сети
Постоянный

Зарегистрирован: 14 июн 2006 21:30
Сообщения: 53
Откуда: Из Сахары
Цитата:
Может разные компиляторы по разному стек обрабатывают.


Ну, это очевидно.

Кстати, я почти-что рзобрался с этой проблемой. Я ржал минут 15 - компилю проект в исходной папке(в каталоге Борланда) - ошибка не вылетает. Копирую этот проект на рабочий стол - ошибка вылезает. Короче думаю пересталю Борланд.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 16 окт 2006 09:01 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Н-да странный случай.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 26 окт 2006 14:00 
Не в сети
Постоянный

Зарегистрирован: 14 июн 2006 21:30
Сообщения: 53
Откуда: Из Сахары
У меня еще вопрос. В 22 уроке NEHE применяет для вывода логотипов альфа канал. Я решил использовать его прием для вывода травы, но уже при 100 четырехугольниках 17 кадров в секунду. Есть-ли другие способы получения полупрозрачной травы? а то 100 полигонов это уж очень мало.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 27 окт 2006 09:33 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Что-то странное у тебя с кодом. Медленно почему-то. Траву выводят как я понял biilboards, например как бабочек в 38 уроке.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 59 ]  На страницу Пред.  1, 2, 3, 4

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB