Компьютерная графика

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Компьютерная графика » Дзен » Найденные ошибки, опечатки, пожелания


Найденные ошибки, опечатки, пожелания

Сообщений 61 страница 68 из 68

61

Всем привет.

Начал разбираться с исходным кодом к книге "Графика трехмерной компьютерной игры на основе OpenGL" и возник вопрос зачем объявлять виртуальные функции в потомках если они уже объявлены в базовом классе? (может я что то упустил)

Пожалуйста объясните какую полезную работу делает класс Set (папка Foundation).

Заметил несколько неточностей.

Файл Array.cpp

Код:
static	int __cdecl compFunc ( const void * elem1, const void * elem2 )
{
	return (*theComparator)( (Object *)elem1, (Object *)elem2, theArg );
}

должно быть вроде так

Код:
static	int __cdecl compFunc ( const void * elem1, const void * elem2 )
{
	return (*theComparator)( *(Object **)elem1, *(Object **)elem2, theArg );
}

Файл ObjStr.cpp

Код:
String :: String ( float value ) : Object ( "" )
{
	int	   dec;
	int	   sign;
	char * ptr = _ecvt( (double)value, 10, &dec, &sign );

	maxLength = STR_BLOCK_SIZE*((strlen ( ptr ) + STR_BLOCK_SIZE)/STR_BLOCK_SIZE);
	contents  = new char [maxLength];
	length    = strlen ( strcpy ( contents, ptr ) );
	metaClass = &classInstance;
}

Функция _ecvt возращает строку цифр без знака и разделителя (они указаны в переменных dec, sign).

PS Если что извините я далеко не специалист в программировании :)

0

62

В примерах к статье Light PrePass Rendering в шейдерах lpp-p3.fsh и lpp2-p3.fsh следует заменить diff * c на diff * c.xyz, иначе ATI карточки вываливаются с:

error(#162) Wrong operand types no operation '*' exists that takes a left-hand operand of type 'highp 3-component vector of float' and a right operand of type 'highp 4-component vector of float' (or there is no acceptable conversion)

0

63

Поправил LPP статью и архивы, сапсибо

0

64

2 Delit:

Про Array.cpp - там в массиве уже хранятся указатели, а qsort сортирует массив элементов, поэтому *(Object **) не нужно
А со String::String - это похоже действительно ошибка

0

65

Steps3D, будет класно, если ссылки на сайт steps3d.narod.ru не будут восприниматься как "внешние", и лишнее окошко с зоголовком "Переход по внешней ссылке" не будет появляться.

Бывают сложные и очень длинные ссылки, например:
http://advances.realtimerendering.com/s … CryEngine3(SIGGRAPH%202010%20Advanced%20RealTime%20Rendering%20Course).pdf
Хочется, чтобы форум правильно их отображал. Или хотя бы чтобы их можно было вставить в тег [url ] ссылка [/url ], а то и этого нельзя...

[правка]
Ошибка на главной странице, написано "дполнения".

Отредактировано DungeonLords (2010-09-05 13:03:51)

0

66

Продолжаю разбираться с исходным кодом к книге "Графика трехмерной компьютерной игры на основе OpenGL" :)

Файл ObjStr.cpp

Код:
~String ()
	{
    delete contents;
	}

contents должен освобождаться как массив delete [] contents;

Код:
String :: String ( const char * val ) : Object ( "" )
{
	length    = strlen ( val );
	maxLength = STR_BLOCK_SIZE * ((length + 1 + STR_BLOCK_SIZE - 1) / STR_BLOCK_SIZE);
	contents  = new char [maxLength];
	metaClass = &classInstance;

	strcpy ( contents, val );
}

выражение (length + 1 + STR_BLOCK_SIZE - 1) это муки творчества? :)

Код:
String& String :: removeTrailingSpaces ()
{
	for ( int i = length - 1; i >= 0 && isspace ( contents [i] ); i-- )
    ;

	contents [i+1] = '\0';

	return *this;
}

нехватает определения размера строки length = strlen ( contents);

Код:
int    String :: find  ( const String& pattern, int start, int options ) const
{
	if ( start >= length )
    return -1;

	if ( options == 0 )
	{
    char * ptr = strstr ( contents + start, pattern.contents );

    if ( ptr == NULL )
    	return -1;

    return ptr - contents;
	}
	else
	if ( options == STR_SEARCH_NO_CASE )
	{
    for ( int i = start, j = 0; contents [i] != '\0'; i++ )
    	if ( pattern.contents [j] == '\0' )
        return start;
    	else
    	if ( toupper ( (unsigned char) contents [i] ) == toupper ( (unsigned char) pattern.contents [j] ) )
        j++;
    	else
    	{
        i = start;
        j = 0;
    	}

    	return -1;
	}

	return -1;        	// ilegal options
}

при options = STR_SEARCH_NO_CASE  функция попадает в транс :)

PS про Array.cpp проверил на практики ваш вариант использования qsort приводит к аварийному завершению программы, вариант *(Object**) работает нормально.

Отредактировано Delit (2010-09-10 11:42:21)

0

67

DungeonLords написал(а):

Steps3D, будет класно, если ссылки на сайт steps3d.narod.ru не будут восприниматься как "внешние", и лишнее окошко с зоголовком "Переход по внешней ссылке" не будет появляться.

Мое предложение о переезде ко мне на VDS все еще в силе. Причем выбор вариантов web-layer'a довольно: от полностью  интегрированного решения на trac (wiki c кучей плагинов/модулей и интеграцией с SVN, браузер репозитория, форум (не очень красивый, но предельно функциональный) до полностью независимой сборки из, например, media wiki и phpBB. При этом есть полная свобода с выбором софта, так как все таки VDS. Аптайм высокий (->100%, за почти год работы с хостером было два отключения, из них только о одном не было предупреждения и оно было связано с форсмажором), у сервера 512 мб памяти и 6.5 GB свободного HDD. При этом на нем крутится низко-нагруженый сайт (~170 уникальных посещений в месяц).

Если все упирается исключительно в покупку домена, то я могу ее проспонсировать, однако по ряду причин приобрести домен в зоне ru я сам не могу...

Ну и да, у Wiki есть серьезное преимущество, DungeonLords сможет править грамматику прям на лету, не создавая тем по 100500 сообщений)

Отредактировано crsib (2010-09-14 01:14:30)

0

68

могу отдать steps3d.ru . он сейчас на моем хостинге и никак не используется

0


Вы здесь » Компьютерная графика » Дзен » Найденные ошибки, опечатки, пожелания


создать свой форум бесплатно