Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Какой выбрать язык програмирования?

Автор: DartReven
Дата сообщения: 24.07.2006 17:39
Хочу в качестве хобби выбрать такую вещь, как програмирование виртуальной реальности. Подскажите, плиз, какой язык выбрать?
+у меня есть опыт прогамирования на С++
Автор: TheChampion
Дата сообщения: 24.07.2006 22:02
DartReven
VMRL?
Автор: agny123
Дата сообщения: 25.07.2006 14:40
не важно, создаешь модели в 3D студии и загоняешь в свой проект.
если cpp хорошо знаешь то значит лучше на нем, главное нужен опыт работы с opengl
Автор: unikum
Дата сообщения: 28.07.2006 18:22
Да, думаю на Сях будет полегше, т.к. книг и примеров по програмированию 3Д больше. А OpenGL или DirectX?
Автор: verhovetc
Дата сообщения: 29.07.2006 13:28
2TheChampion - а что, как идея вполне потянет

2agny123 далась тебе эта студия? Редакторов - куча с небольшой горочкой. И платных и
бесплатных

а попробуй написать интерфейс-переходник для OpenGL и DirectX

PS
рекомендую посмотреть исходники Ogre и Irrlight (в написании последнего возможно ошибся)
они как раз на С (на сайте - несколько версий)

Слушай, а у тебя случаем не украинская фамилия на букву "Д"?
Автор: XDiaBLo
Дата сообщения: 31.07.2006 08:53
DartReven
DevLib-SDK посмотри. Там набор библиотек и графических и физических. Чтоб самому примитивами не заморачиваться. Тут ведь важно не только язык выбрать, а и чтоб инструменты удобные под рукой были!
Автор: BlackVetal
Дата сообщения: 31.07.2006 09:51
DartReven
Такой вопрос: тебе просто нужен 3D мир или для инета?
В инета помоему рулез будет VRML (полностью поддерживаю TheChampion)
а для простых 3D карт вполне сойдет Си + OpenGl (или DirectX) ... (или точнее сказать лучше нанем и писать !!!)
Автор: XDiaBLo
Дата сообщения: 31.07.2006 12:00
BlackVetal
Дык тут не хватит C/C++ + OpenGl, нужно же ещё физику реализовать. Я и говорю что проще взять DevLib, там всё есть, прикручивается к Визуал студии, Dev-C++, и ещё там варианты есть. А VRML этот, ну его... Лучше уж клиент сделать, если для инета... Хотя кому что...
Автор: BlackVetal
Дата сообщения: 01.08.2006 11:14
XDiaBLo
Да я и неспорю: хватит не хватит. Спорить что лучше - сам понимаш бесполезно. Кто к чему привык- так и рисует. Для рисования 3D мира можно использовать кучу плагинов и библов. Вот какие использовать, так это пусть выбирает сам DartReven, ему тут предложили некоторые компоненты.

Автор: XDiaBLo
Дата сообщения: 01.08.2006 11:43
BlackVetal
Пусть выбирает, просто моё мнение что есть уже вполне неплохие наборы, в которые уже кто-то навыбирал, и скрутил между собой :) Хотелось бы про другие такие наборы тоже услышать, ведь есть же что-то ещё такое, кроме DevLib?
Автор: zf
Дата сообщения: 03.08.2006 10:49
DartReven
Мой добрый знакомый любил говаривать: "Технолигии приходят и уходят, а Цэ остается"
Автор: stusivanv
Дата сообщения: 07.08.2006 11:58
Что ни говорите, а я предпочитаю Делфю, да и примеров много, в т.ч. Total Commander и The Bat!. Так что, для начала думаю в самый раз будет!
Автор: TheChampion
Дата сообщения: 07.08.2006 18:57
Категорически не согласен с предыдущим оратором. Нет ничего более похабного для OpenGL, чем делпхи. А DirectX вообще возможно использовать только в C++, C# и VB. Ибо MS не дает заголовков/модулей для иных языков.

Кстати, давеча нарисовал окошко в QT, засобачил в него Direct3D и откомпилировал MinGW --- и ничего, работает!

PS: а QT очень даже поддерживает OpenGL, классы для работы есть во всех версиях. Ну и кроссплатформенность :-)
Автор: XDiaBLo
Дата сообщения: 08.08.2006 07:13
TheChampion
Ну дык! Дельфи и Билдер вообще годятся только чтоб мелкие приложения работающие с БД делать. А если кто и делает что-то другое, то это уже из области извращений
Автор: verhovetc
Дата сообщения: 08.08.2006 07:52
2XDiaBLo
Все зависит от кривизны рук. А за разжигание "межсредовой" розния я б тебя...

TheChampion

Цитата:
А DirectX вообще возможно использовать только в C++, C# и VB. Ибо MS не дает заголовков/модулей для иных языков.

Первый раз такой гон слышу. Кроме MS заголовков/модулей есть достаточно качественные порты на другие языки : и на Delphi в том числе.

Ребят, я согласен, что есть какие-то ограничения , но при умелом приложении рук они успешно обходятся. Так, что не надо писать о том, что сам не пробовал или пробовал недостаточно качественно
Автор: valerka78
Дата сообщения: 08.08.2006 09:12

Цитата:
Ну дык! Дельфи и Билдер вообще годятся только чтоб мелкие приложения работающие с БД делать. А если кто и делает что-то другое, то это уже из области извращений

Чета многовата получается извращенцев...

Цитата:
Все зависит от кривизны рук.

Вот именно.
Автор: TheChampion
Дата сообщения: 08.08.2006 10:52
verhovetc

Цитата:
Первый раз такой гон слышу.

А ты документацию к DirectX никогда не читал?
И сколько надо ждать, пока эти "качественные порты" появятся?

valerka78

Цитата:
Чета многовата получается извращенцев...

Какие ваши доказательства? Себя в пример не приводить.
Автор: valerka78
Дата сообщения: 08.08.2006 12:55
Отвечать на вопрос желания нету
Манию величия надо лечить.
Автор: verhovetc
Дата сообщения: 08.08.2006 13:25
TheChampion
а документация тут причем, позвольте узнать?
если MSDN почитать - на Delphi кодить не сможешь?

а качественные порты можно найти например на http://www.clootie.ru/delphi/download_dx92.html

кстати, чтобы не продолжать перепалку: wasm.ru - примеры программирования на ассемблере (OpenGl)
а на томже clootie.ru - порты под FreePascal
так что не С единым...






Автор: RedPromo
Дата сообщения: 08.08.2006 13:28
Помойму опять возник вопрос Delphi and C++ что круче. Да все равно на чем главное какой ты язык знаеш лучше на таком и нужно разрабатывать.
Автор: XDiaBLo
Дата сообщения: 08.08.2006 13:55
RedPromo
Не, тут вопрос другой, как там с рефакторингом в последних версиях Дельфи? Всё ещё никак?
Автор: TheChampion
Дата сообщения: 08.08.2006 14:19
valerka78

Цитата:
Отвечать на вопрос желания нету

Не нашел ничего стоящего на делпхи? Бывает :-)

verhovetc

Цитата:
а документация тут причем, позвольте узнать?

При том, что там нет совершенно никаких упоминаний языков, отличных от C++, C# и VB. Соответственно я себе плохо представляю, как мне написать что-то вроде

Код:
#include "d3d9.h"

typedef CComPtr<IDirect3D9> CCPDIRECT3D9;

int main(void)
{
CCPDIRECT3D9 Direct3D;
if(!(Direct3D = Direct3DCreate9(D3D_SDK_VERSION)))
return 1;
return 0;
}
Автор: RedPromo
Дата сообщения: 08.08.2006 14:56
TheChampion
Не углубляясь в дальнее размышления вот пример

Цитата:

var
pD3D: IDirect3D9;
begin
Result:= nil;

pD3D := Direct3DCreate9( D3D_SDK_VERSION);
if (pD3D = nil) then Exit;

Вот я допустим представляю как это сделать но я не отдаю предпочтение Delphi в использовании Direct. Насчет байки согласен, нужно делать там где это можно сделать быстрее.
Да лично я считаю что просто на С++ больше примеров больше документации.
Насчет заголовков для Delphi
вот сайтик почитайте _http://www.clootie.ru/delphi/
Там есть все то что доказывает Direct живет и на паскале.
Автор: TheChampion
Дата сообщения: 08.08.2006 15:04
RedPromo
Стоп, стоп, стоп!

IDirect3D --- это что? Интерфейс? Почему pD3D? Указатель? Тогда почему IDirect3D9, а не LPDIRECT3D9? Где его деструктор? Вызывает ли деструктор Release()? Не происходит ли тут утечка ресурсов? Я не просто так писал CComPtr, чтобы "было круто", за ним смысл глубокий скрыт.

Ваш код вообще компилируется? Как? Где подключенные модули DirectX 9?

И что насчет отображения строки в CComPtr<ID3DXText> и CComPtr<ID3DXFile>?
Автор: RedPromo
Дата сообщения: 08.08.2006 16:52
TheChampion
Я понимю что не просто так я просто вырвал кусочек кода из общего модуля.
Ладно давай разберемся в деталях как в делфи писать под Direct, а то у тебя одни вопросы.

Цитата:
IDirect3D --- это что? Интерфейс? Почему pD3D? Указатель? Тогда почему IDirect3D9, а не LPDIRECT3D9?

IDirect3D9 = interface; //Думаю тут понятно

Цитата:

IDirect3D9 = interface(IUnknown)
['{81BDCBCA-64D4-426d-AE8D-AD0147F4275C}']
(*** IDirect3D9 methods ***)
function RegisterSoftwareDevice(pInitializeFunction: Pointer): HResult; stdcall;
function GetAdapterCount: LongWord; stdcall;
function GetAdapterIdentifier(Adapter: LongWord; Flags: DWord; out pIdentifier: TD3DAdapterIdentifier9): HResult; stdcall;
function GetAdapterModeCount(Adapter: LongWord; Format: TD3DFormat): LongWord; stdcall;
function EnumAdapterModes(Adapter: LongWord; Format: TD3DFormat; Mode: LongWord; out pMode: TD3DDisplayMode): HResult; stdcall;
function GetAdapterDisplayMode(Adapter: LongWord; out pMode: TD3DDisplayMode): HResult; stdcall;
function CheckDeviceType(Adapter: LongWord; CheckType: TD3DDevType; AdapterFormat, BackBufferFormat: TD3DFormat; Windowed: BOOL): HResult; stdcall;
function CheckDeviceFormat(Adapter: LongWord; DeviceType: TD3DDevType; AdapterFormat: TD3DFormat; Usage: DWord; RType: TD3DResourceType; CheckFormat: TD3DFormat): HResult; stdcall;
function CheckDeviceMultiSampleType(Adapter: LongWord; DeviceType: TD3DDevType; SurfaceFormat: TD3DFormat; Windowed: BOOL; MultiSampleType: TD3DMultiSampleType; pQualityLevels: PDWORD): HResult; stdcall;
function CheckDepthStencilMatch(Adapter: LongWord; DeviceType: TD3DDevType; AdapterFormat, RenderTargetFormat, DepthStencilFormat: TD3DFormat): HResult; stdcall;
function CheckDeviceFormatConversion(Adapter: LongWord; DeviceType: TD3DDevType; SourceFormat, TargetFormat: TD3DFormat): HResult; stdcall;
function GetDeviceCaps(Adapter: LongWord; DeviceType: TD3DDevType; out pCaps: TD3DCaps9): HResult; stdcall;
function GetAdapterMonitor(Adapter: LongWord): HMONITOR; stdcall;
function CreateDevice(Adapter: LongWord; DeviceType: TD3DDevType; hFocusWindow: HWND; BehaviorFlags: DWord; pPresentationParameters: PD3DPresentParameters; out ppReturnedDeviceInterface: IDirect3DDevice9): HResult; stdcall;
end;

Еще раз посторюсь если есть желание посмотреть весь код и посмотреть как писать на делфях Direct вот сылка _http://www.clootie.ru/delphi/download_dx92.html.
Вот заголовочные файлы для делфи _http://www.clootie.ru/delphi/DX92/Clootie_DirectX92.exe
Есть даже книги насчет этого. Вот например
q]DirectX. Графика в проектах Delphi
Краснов
[/q]
Автор: TheChampion
Дата сообщения: 08.08.2006 17:08
RedPromo
Нет, меня интересует, нужно ли вызов Create завершать Release()? Обширный код ничего не дает в этом смысле.

Является ли присваивание аналогом AddRef()? Есть мнение, что нет, т. к. в паскале нельзя перегружать операторы. В силу чего твой код вызовет утечку памяти.

Влечет ли выход из области видимости вызов деструктора и, как следствие, Release()? Если нет (а у интерфейса нет деструктора просто в силу устройства COM), то в твоем коде утечка памяти.

По ссылке ходил, но там надо скачивать, архив открывать... Лень!
Автор: RedPromo
Дата сообщения: 08.08.2006 17:32
TheChampion
Отвечаю утечки памяти не будет так как методы _AddRef and _Release вызываются неявно при появлении ссылки и выхода за пределы видимости. Предвидя дальнейший вопрос скажу что конечно же есть исключения из этого правила.
если код простой

Цитата:

Var
ID: IDemo;
begin
ID:= IDemo.Create(); //неявно AddReff;
...
...
ID:= nil; //Неявно IUnknown._Release;
end;

Автор: TheChampion
Дата сообщения: 08.08.2006 17:35
RedPromo
Хорошо, допустим, убедил. А что насчет AddRef() при копировании p1 = p2?
Автор: RedPromo
Дата сообщения: 08.08.2006 22:31
TheChampion


Цитата:

var
Test: ITest;
T: TTest;
begin
T := TTest.Create;
Test := T;
T:= nil;
.......
Test.Beep;
end;

Ну умеет работать Delphi c Com.
Автор: TheChampion
Дата сообщения: 08.08.2006 22:51
RedPromo
Пример не понял... Как TTest преобразуется в ITest?

И еще: как осуществляется AddRef в операторе присваивания, если его нельзя перегрузить?

Страницы: 1234

Предыдущая тема: Зацикливание функции в VBScript


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.