PMG

Форумы по созданию игр
Текущее время: 19 мар 2024 07:04

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




Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Прошу заценить первый в моей жизни перевод
СообщениеДобавлено: 29 мар 2007 13:33 
Не в сети
Постоянный
Аватара пользователя

Зарегистрирован: 02 сен 2005 22:34
Сообщения: 98
Откуда: Питер
Вобщем жду критики Оо

Оригинал: http://irrlicht.sourceforge.net/tut001.html

Урок 1: Hello World
Этот Урок показывает, как установить IDE, чтобы пользоваться Irrlicht Engine и как написать простую программу Hello World с его помощью. Программа покажет, как использовать VideoDriver, GUIEnvironment и SceneManager.
Результат этого примера будит, похож на это:


Изображение



Настройка IDE

Чтобы использовать движок, мы должны подключить заголовочный файл <irrlicht.h>, который находится в Irrlicht Engine SDK папке \include. Чтобы позволить компилятору найти этот заголовочный файл, папка где он находится должна быть где-нибудь указана. Это по-разному для каждой IDE и компилятора. Я объясню, как это делается в Microsoft Visual Studio C++ 6.0 и .NET:
Если вы используете Version 6.0, выберите Menu Extras -> Options. Выберите вкладку директории, и выберите пункт 'Include' в списке. Добавьте директорию \include из папки Irrlicht Engine в список директорий. Теперь компилятор заголовочный файл Irrlicht.h. Мы также нуждаемся в пути к irrlicht.lib в списке, также выбираете вкладку 'Libraries' и добавьте директорию \lib\VisualStudio.


ИзображениеИзображение


Если ваша IDE Visual Studio .NET, выберите Tools -> Options. Выберите вход Projects и затем выберите директориюVC++. Выберите 'show directories for include files' в списке, и добавьте директорию \include из папки Irrlicht Engine в список директорий, так компилятор найдет заголовочный файл Irrlicht.h. Мы также нуждаемся в нахождении irrlicht.lib, также выбираете'show directories for Library files' и добавьте директорию lib\VisualStudio.


Изображение



Давайте начнем!

После того как мы настроили IDE, теперь компилятор знает где находятся заголовочные файлы Irrlicht Engine, таким образом мы можем включить их теперь в наш код.
Код:
#include <irrlicht.h>


В Irrlicht Engine, все находится в пространстве имен 'irr'. Таким образом, если вы хотите воспользоваться классом движка, вы должны написать irr:: перед именем класса. Для примера, чтобы использовать IrrlichtDevice, напишите: irr::IrrlichtDevice. Чтобы избежать необходимость набирать irr:: перед именем каждого класса, мы скажем компилятору, что мы используем пространство имен.
Код:
using namespace irr;


Также 5 подпространств имен включены в Irrlicht Engine. Рассмотрим их: вы сможете прочитать подробное описание об них в документации кликнув по ссылке 'Namespace List'. Чтобы сохранить этот пример простым, мы должны установить пространство имен, следовательно:
Код:
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;


Чтобы воспользоваться файлом Irrlicht.DLL, мы должны установить соединение с Irrlicht.lib. Мы можем установить эту опцию в настройках проекта, но сделаем это проще, мы используем примечание 'pragma':
Код:
#pragma comment(lib, "Irrlicht.lib")


Теперь главный метод: чтобы сохранить этот пример простым мы используем void main(), который может быть использован на любой платформе. Однако, на Windows платформах, мы можем также использовать метод WinMain если мы хотим избавиться от консольного окна, которое выскакивает при старте программы с main().
Код:
int main()
{


Самая важная функция движка это функция 'createDevice'. Irrlicht Device, это главный объект для создания всего в движке, может быть создано с им. createDevice() имеет 7 параметров:
deviceType: Тип устройства. Этим теперь может быть Null device, Software device, Direct3D8, Direct3D9 или OpenGL. В этом примере мы воспользуемся EDT_SOFTWARE, но для использования, вы можете изменить их хоть на EDT_NULL, EDT_DIRECT3D8, EDT_DIRECT3D9 или EDT_OPENGL.
windowSize: Размер окна или полноэкранный режим которое будит создано. В этом примере мы воспользуемся 512x384.
bits: Число битов которое будит использоваться в полноэкранном режиме. Может быть16 или 32. Этот параметр будит проигнорирован, когда используется оконный режим.
fullscreen: Определяет хотим ли мы чтобы устройство работало в полноэкранном режиме или нет.
stencilbuffer: Определяет хотим ли мы использовать трафаретный буфер для отрисовки теней.
vsync: Определяет хотим ли мы включить vsync. Это возможно только в полноэкранном режиме.
eventReceiver: объект получения событий. Мы не будим использовать этот параметр здесь, и установим его в 0.
Код:
IrrlichtDevice *device =
      createDevice(EDT_SOFTWARE, dimension2d<s32>(512, 384), 16,
         false, false, false, 0);


Теперь мы установим заголовок окна, каким-нибудь хорошим текстом. Замете что где 'L' первый символ строки, Irrlicht Engine использует большие символы строки для вывода текста.
Код:
device->setWindowCaption(L"Hello World! - Irrlicht Engine Demo");


Теперь мы сохраним указатель на видео устройство, SceneManager, и графический пользовательский интерфейс окружения, так чтобы нам не приходилось всегда писать device->getVideoDriver(), device->getSceneManager() и device->getGUIEnvironment().
Код:
IVideoDriver* driver = device->getVideoDriver();
ISceneManager* smgr = device->getSceneManager();
IGUIEnvironment* guienv = device->getGUIEnvironment();


Мы добавляем заголовок hello world окну используя окружение GUI. Текст расположится на позиции (10,10) левого верхнего угла и (200,22) правого нижнего угла.
Код:
guienv->addStaticText(L"Hello World! This is the Irrlicht Software engine!",
    rect<int>(10,10,200,22), true);


Чтобы вывести что-нибудь интересной, мы загружаем модель из Quake 2 и выводим ее. Мы только должны получить Mesh от Scene Manager с помощью getMesh() и добавить SceneNode на вывод mesh с помощью addAnimatedMeshSceneNode(). Вместо загрузки файла Quake2 (.md2), также возможна загрузка объектного файла Maya (.obj), законченную карту Quake3 (.bsp) или файл Milshape (.ms3d).
Между прочим, эта классная модель Quake 2 названая sydney.md2 была создана Brian Collins.
Код:
IAnimatedMesh* mesh = smgr->getMesh("../../media/sydney.md2");
IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode( mesh );


Чтобы модель выглядела немного лучше, мы изменим немного материал: мы отключим освещение, потому что у нас здесь нету динамического освещения и модель была бы полностью черной. Теперь мы установим цикл кадра так чтобы анимация повторялась между 0 и 310 кадрами. Теперь мы наложим текстуру на модель. Без этого модель была бы нарисована используя только сплошной цвет.
Код:
if (node)
{
   node->setMaterialFlag(EMF_LIGHTING, false);
   node->setFrameLoop(0, 310);   
   node->setMaterialTexture( 0, driver->getTexture("../../media/sydney.bmp") );
}


Чтобы посмотреть на модель, мы помещаем камеру в 3д пространстве в позицию (0, 10, -40). Камера смотрит оттуда на (0,5,0).
Код:
smgr->addCameraSceneNode(0, vector3df(0,30,-40), vector3df(0,5,0));


Хорошо. Теперь, когда мы настроили сцену давайте все это нарисуем: мы запускаем устройство в цикле while(), пока устройство не будит работать больше. Это будит пока пользователь не закроек окно или не нажмет ALT+F4 в Windows.
Код:
while(device->run())
{


Все должно быть нарисовано между beginScene() и endScene() запросами. beginScene очищает экран с цветом и также буфер глубины, если это желательно. Теперь мы позволим Scene Manager и окружению GUI нарисовать их содержимое. С endScene() запросом, все выводится на экран.
Код:
   driver->beginScene(true, true, SColor(255,100,101,140));
   smgr->drawAll();
   guienv->drawAll();
   driver->endScene();
}


После того как мы закончим, мы должны удалить Irrlicht Device созданный раньше createDevice(). В Irrlicht Engine, вы должны удалить все объекты которые вы создали при помощи метода или функции начинающимся с 'create'. Объект удалить очень просто calling ->drop(). Для большей информации смотрите документацию.
Код:
   device->drop();
return 0;
}


Это все. Компилируете и запускаете.


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

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Не плохо, есть ошибки, но так вполне нормально.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 мар 2007 20:00 
Не в сети
Постоянный
Аватара пользователя

Зарегистрирован: 02 сен 2005 22:34
Сообщения: 98
Откуда: Питер
Хотелось бы узнать какие Оо


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 30 мар 2007 08:57 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Чисто не те буквы не там ... Вот например : "Этот параметр будит" - надо в word загрузитьт текст и там проверить.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 30 мар 2007 18:50 
Не в сети
Постоянный
Аватара пользователя

Зарегистрирован: 02 сен 2005 22:34
Сообщения: 98
Откуда: Питер
Дак в ворде и набирал Оо едиственое слово каторое он мне выдал с ошибкой это "отрисовки"


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

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Вообще да ты прав, просто слово "будит" видимо правильное, но не в контексте статьи.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 02 апр 2007 18:26 
Не в сети
Опытный
Аватара пользователя

Зарегистрирован: 11 авг 2004 17:00
Сообщения: 283
Откуда: Москва
Для первого перевода очень хорошо.

Укажу на неточности, которые могут вылезти при общении с издательствами:

Цитата:
установить IDE


Общепринятый вариант - настроить среду разработки.

Цитата:
Результат этого примера будит


Никого он не будит. Правильно "будет"
Цитата:
который находится в Irrlicht Engine SDK папке \include.


который находится в папке \include Irrlicht Engine SDK.

Цитата:
Чтобы позволить компилятору найти этот заголовочный файл, папка где он находится должна быть где-нибудь указана. Это по-разному для каждой IDE и компилятора.


Чтобы компилятор нашел этот заголовочный файл, надо указать папку, где он находится. Способ зависит от среды разработки и компилятора.

В принципе дальше те же замечания - перевод правильный, но ему не хватает литературной обработки (моим переводам ее тоже не хватает)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 02 апр 2007 19:53 
Не в сети
Постоянный
Аватара пользователя

Зарегистрирован: 02 сен 2005 22:34
Сообщения: 98
Откуда: Питер
С русским не дружу :p переводил вечером после учебы для себя... но думаю тому каму это надо поймет =)


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

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
В любом случае надо сказать NetLib спасибо, что _один_тщательно_ просмотрел текст и выдал свои замечания, это полезный опыт, можно извлечь из этого массу полезного! В данном случае, у тебя есть хорошая возможность улучшить качество своего перевода, если твой перевод будут проверять и выдавать тебе рекомендации, и если ты будешь извлекать из них полезный опыт, качество твоих переводов резко возрастет, соответственно то, что ты хочешь до нести до других людей, будет более высокого качества.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 03 апр 2007 09:25 
Не в сети
Опытный
Аватара пользователя

Зарегистрирован: 11 авг 2004 17:00
Сообщения: 283
Откуда: Москва
XPEH писал(а):
С русским не дружу :p переводил вечером после учебы для себя... но думаю тому каму это надо поймет =)


Как мне это знакомо. Вечером по-быстрому переведешь, вроде и надо еще раз вычитать, чтобы ошибки убрать, но так лениво... Выкладываешь так и думаешь "вроде все понятно, так что сойдет"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 03 апр 2007 11:57 
Не в сети
Постоянный
Аватара пользователя

Зарегистрирован: 02 сен 2005 22:34
Сообщения: 98
Откуда: Питер
NetLib, есть немного ;) хотя на самом деле это изза того что не дружу с русским, я пишу с мега большим количеством ошибок и даже когда читаю свой текст и вижу что он лопатно сформулирован немагу придумать как лучше сформулировать

п.с. спасибо за ошибки, сегодня-завтро будет еще 2-3 :p


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

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Ошибки и выражения это поправимо.

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

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


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

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


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

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