GRY-Online.pl --> Archiwum Forum

Programowanie w Directx 10 . Zna sie ktos ?

19.07.2007
11:50
smile
[1]

Chupacabra [ Senator ]

Programowanie w Directx 10 . Zna sie ktos ?

Mam ogolnie stworzyc program wykozystujacy dx10/OGl 2.0 i CUDA nVidii.

No i problem jest, ze jestem sieciowcem nie programista, a z programowanie grafiki nie mialem wogole doczynienia Poczytalem sobie troche, doszedlem do wniosku, ze chcialbym cos zrobic w C# (to jako tako znam podstawy, w c++ w zyciu zrobilem ze dwa programiki) i directx10.
Dzialanie programu ma polegac na tym, ze renderuje sie jakas scenka 3d a my wybieramy jej parametry rozne, glownie jakies bajery graficzne itp.

No i teraz problemy: myslalem uzyc jakis gotowy engine, zaby za duzo sie nie skupiac na uczeniu programowania a bardziej na grafice, ale jak widze, chyba nie ma nic dostepnego wykozystujacego c# i dx10 ?

19.07.2007
11:54
[2]

elfik [ z wired ]

Jak dużo masz czasu na projekt?

Skoro koncentrujesz się na grafice, spróbuj zapoznać się z www.xna.pl /

19.07.2007
11:56
smile
[3]

Chupacabra [ Senator ]

no z rok, dwa czasu mam ;)

Wlasnie XNA odpada, jako ze nie oblusguje dx10 tylko 9 i z tego co czytalem, za szybko to sie nie zmieni.
Z istniejacych aktualnie enginow obslugujacych dx10 to chyba wszystkie sa komercyjne

19.07.2007
12:03
[4]

elfik [ z wired ]

Ach to tak...

Mimo wszystko skup sie na c++, dorwij książke luny (wyjaśnia podstawy)



.. a potem dopiero uderz w dx 10.

19.07.2007
12:09
[5]

elfik [ z wired ]

Póki co programowanie zorientowane stricte na GPU sprawdza się najlepiej przy obliczeniach naukowych, dane tego samego typu rozkładane na shadery są obliczane niebotycznie szybko.

C/C++ nie przeskoczysz jeśli chcesz się zająć tym tematem, nawet nauka engine będzie kosztować Cie wiedzę. C# to zły pomysł, sprawdza się głownie do zastosowań korporacyjnych i aplikacji biznesowych; jest chybiony jeśli chodzi o programowanie grafiki bo z niskopoziomowym programowaniem ma niewiele wspólnego.

19.07.2007
12:15
[6]

legrooch [ MPO Squad Member ]

elfik ==> I co w związku z przeznaczeniem C#? Sądzisz, że będzie dużo mniej wydajny od C++? Chyba żartujesz. Za to uczenie się C++ + pieprzenie z importowaniem bibliotek C++ będzie męczarnią.

19.07.2007
12:24
[7]

elfik [ z wired ]

legrooch

Pokaż mi engine napisany w C#.

19.07.2007
12:29
[8]

elfik [ z wired ]

edit: ja neguje C# jedynie jako narzędzie do programowania grafiki

19.07.2007
12:33
[9]

Chupacabra [ Senator ]

no juz duzo poczytalem na ten temat i spadek wydajnosci przy stosowaniu c# siega kolo 5% za cene nieporownywalnie latwiejszego programowania. Taka jest opinia gosci z gamedev :)

C na pewno bede musial uzyc, jako ze API CUDA oparte jest na nim, ale to nie pwoinno byc takim wielkim problemem.

I tak do tego dojdzie pewnie HLSL, jezyk programowania shaderow.

jestem zdecydowanie zaparty na C#, costam w nim robilem, w asp.net , ale zawsze, c++ mialem tylko jeden semestr na studiach i to byla starszna meczarnia z tymi przekletymi wskaznikami :)

Program nie ma byc wydajny, szybki, estetyczny itp. Ma pokazywac grafike :)

19.07.2007
12:36
[10]

elfik [ z wired ]

spadek wydajnosci przy stosowaniu c# siega kolo 5% za cene nieporownywalnie latwiejszego programowania

Haha, of course, unreal engine, doom, crysis, wszystko to było pisane na C#. Co więcej, słyszałem że następne wcielenie cryengine to krystaliczny C#!

19.07.2007
12:49
[11]

Chupacabra [ Senator ]

elfik --> to akurat sa gry, gdzie liczy sie jak najwieksze wycisniecie jak najwiecej efektow z ukladow. Czesciowo programuja GPU nawet w assemblerze, no ale czego to dowodzi? wyzszosci assemblera nad c++ ? :)

a c# ma spore szanse, prznajmniej czesciowo zastapic jave imho, zobacz chociaz na te XNA o ktorym wspominales albo mdx. W jakim jezyku sa te sdk? Z tego to poczytalem xna ma w przyszlosci byc (juz teraz w sumie jest) uniwersalna platforma do przenoszenia gier miedzy PC a Xboxem 360.
I zalozyc sie moge, ze nastepny windows, a na pewno xbox beda oparte glownie na c#

19.07.2007
12:53
smile
[12]

elfik [ z wired ]

zakład przyjęty :) *wskazuje palcem na keg heinekena*

19.07.2007
13:32
[13]

legrooch [ MPO Squad Member ]

Elfik ==> A jak się ma wydajnościowo Java do C# w grafice? Jest duużo wolniejsza, prawda?
Jednak chłopaki z Techlandu dają radę co widać. Dalej będziesz bzdurnie negować coś, z czym nie miałeś doczynienia?
Myślisz, że po co DX od 9.0 byłby przystosowywany do .NETu? Dla jaj?

Zresztą wystarczy test poruszania się aplikacji po tablicach. Dużych. Opis świata.
Zgadnij, co szybciej przesortuje elementy w tablicy? Twój algorytm, czy sortedlist z .NETu?
To, że możesz szybciej sparsować plik kilunasto/kilkuset kilowy nie oznacza, że cała reszta jest do tego wyniku proporcjonalna. Radzę Ci najpierw zająć się takim językiem od podstaw, a później radzić.

19.07.2007
13:57
[14]

elfik [ z wired ]

legrooch

Twoje argumenty dojrzeją kiedy ukaże się gra komputerowa napisana od podstaw w C#, a będąca czymś więcej niż kalką zabawek napisanych we flashu. Póki co cały game development stoi na C++. Gdybać to sobie można, gdybam że COBOL powróci do łask i zmiecie technologie microsoftu z powierzchni globu.

Chupacabra

to akurat sa gry, gdzie liczy sie jak najwieksze wycisniecie jak najwiecej efektow z ukladow

O ile mi wiadomo każda poważna produkcja pisana jest pod tym kątem.

19.07.2007
14:16
smile
[15]

legrooch [ MPO Squad Member ]

Mam ogolnie stworzyc program wykozystujacy dx10/OGl 2.0 i CUDA nVidii.
Zacznijmy więc może od tego pierwszego zdania w wątku
Ma stworzyć coś. Aby oddać, pokazać. Nie wydawać.

Po drugie - uwielbiam masochostiów c/c++ twierdzących, że istnieje tylko jeden prawdziwy język programowania. Szaleni w swoim obłędzie braku kontaktu z otoczeniem. Piękne szaleństwo.

19.07.2007
14:18
[16]

elfik [ z wired ]

Hej legrooch, peace. Ja tak nie twierdzę. Jeśli Chupacabra potrzebuje pokazówki, prostej gry czy dema, C# jest lepszym wyjściem skoro nie lubi wskaźników i chce poznać zaawansowane operacje na obiektach (dziedziczenie przez interfejsy? :P).

Jeśli chce sie ukierunkowac zawodowo na pisanie gier, bez C++ się nie obejdzie.

19.07.2007
14:24
smile
[17]

Arxel [ Legend ]

Pozwolicie, że wtrące pytanie?

To w końcu jakiego języka się uczyć? Czy mam dalej kontynuować naukę w C++ czy przerzucić się na coś innego? Choć i tak na studiach (teraz pójdę do 3 liceum) będzie c++ znając życie i to zapewne niemalże od podstaw znowu...
Proszę tylko o odpowiedź i możecie sobie dalej dyskutować na tamten temat :)

edit: Dobra, nie odświeżyłem, ale chyba już elfik odpowiedział :P Choć poczekam na przynajmniej jeszcze jedno zdanie kogoś.

19.07.2007
14:26
[18]

elfik [ z wired ]

Arxel

Jeden język w roku :-P

A tak poważnie, skoro idziesz do 3 liceum, zacznij od nauki algorytmów ogólnego zastosowania, struktur danych i.. implementuj je w pythonie. Najłatwiejszy język do tego,
liźniesz też podstawy obiektów.

Potem poznaj dobrze c++ (ansi iso c++ draft standard oraz stl). 3 - 4 rok - pora na ukierunkowanie - zależy co Cie kręci - java (j2ee)/c# - najłatwiej znajdziesz prace.

19.07.2007
14:27
[19]

legrooch [ MPO Squad Member ]

Da się spokojnie uzyskać efekt zbliżony wydajnością do C++ pisząc w .NET.
Właśnie kończę pracę magisterską (tyle, żę w DX9.0c) przy użyciu VB.NET.

Efekt - silnik 3D (remake Skyroads z ganianiem po lesie/pustyni/pod wodą) nasycony obiektami w otoczeniu. Brakuje mi jeszcze animacji ruszających się drzew losowo generowanej itp elementów. W wolnej chwili może wrzucę screeny.
I założę się, że nie napiszesz wydajniejszego silnika w C++ w ciągu 3 miesięcy ode mnie.

Peace

Arxel ==> MS ucieka w systemie z COMów. DCOMy na wymarciu. Został .NET i to jest jedynym od strony MS środowiskiem developerskim dla Windows. Jeżeli nie będziesz pisać na Linuksa aplikacji, to zostaje Ci albo .NET, albo Java. Z czego .NET jest dużo przyjemniejszy od reszty języków (nie wspominając już o Delphi).

19.07.2007
14:30
[20]

elfik [ z wired ]

legrooch

I tu mnie masz, nie napiszę akceptowalnego silnika 3D w 3 miesiące.

19.07.2007
14:33
[21]

legrooch [ MPO Squad Member ]

I tu mnie masz, nie napiszę akceptowalnego silnika 3D w 3 miesiące.

A widzisz :)
.NET 2.0 to już nie jest ten muł 1.0/1.1. To już jest wydajna platforma. W zestawieniu z wieloma zastosowaniami tworzy prawdziwe konkretne narzędzie w rękach wprawionego programisty. Prawda, że nowemu może nie wyjść zbyt optymalny silnik ( :) ), ale będzie mu działać i przy minimalnej chęci dorówna do wydajności C++ przy mniejszym poświęceniu czasu na naukę.

19.07.2007
14:37
[22]

Arxel [ Legend ]

legrooch - Ok, przyglądne się .NETowi i zobacze co i jak. Z chęcią zobaczyłbym screeny Twojej pracy :)

A nie lepiej wziąć jakiś darmowy silnik graficzny i go zmodyfikować/ulepszyć? Nie byłoby to lepszym wyjściem? Z tego co kojarze to silnik z CODa jedynki jest darmowy... Choć nie wiem czy posiada licencje GNU.
Oczywiście odrzucam sytuację, w której musimy napisać swój własny

19.07.2007
15:01
[23]

Chupacabra [ Senator ]

Arxel --> zastanawialem sie nad tym i bym sie przychylal do uzycia jakiegos silnika, jest masa dobrych, darmowych z jezykiem do wyboru, no tylko ze jak wspominalem, do max dx9.c. Nawet nie wiem zreszta, co wyjdzie z tego co mam zrobic, dopiero mysle nad tym, co walsciwie mam zrobic i jak sie do tego zabrac ;)

legrooch --> bardzo ciekawi mnie to co robisz, cos najwidoczniej bardzo zblizonego do mojego problemu, moglbys sie ze man skontaktowac, podac wiecej szczegolow jak to wyglada z tym programowaniem grafiki?

20.07.2007
12:23
smile
[24]

elfik [ z wired ]

btw, legrooch:

Przemek Marmul <[email protected]>
data [ 20-07-2007 11:20 ]

Witam,

My mamy kilka silnikow. Najnowszy jest napisany w C++, starsze w javie.

pozdrawiam
Przemek

20.07.2007
12:29
[25]

legrooch [ MPO Squad Member ]

Wiesz, w czym był robiony Chrome? (a później CoJ, ER itp?)

20.07.2007
12:32
[26]

Chupacabra [ Senator ]

elfik --> no jak wpominalem, jest roznica kolo 5%, ktora wciaz robi roznice przy duzych grach, ale z czasem jak moc komputerow dalej bedzie rosnac, zlozonosc gier takze, po prostu bedzie nie oplacalne dla firm, walczyc 2-3 lata z podstawa silnika w c++, zeby zaimplementowac wszystkie nowe efekty, dlatego pojdzie sie na sutepstwa i uzyje c# (lub podobnego) ktory znacznie rpzyspieszy proces developingu a takze pozwoli przenosic znacznie latwiej gierki miedzy platfromami. Czysty zysk dla firmy!
Bo czas programisty jest znacznie cenniejszy niz procesora ,jak to mawial moj prefosorek od programowania obiektowego, fan maszyn wirtualnych

20.07.2007
12:34
[27]

elfik [ z wired ]

Chrome był pisany w javie, natomiast przypuszczam że CoJ w cpp + java jako jezyk skryptowy do oprogramowania fizyki bez ingerencji w kod źródłowy (tyle wyczytalem z broszurki, nie pytałem o to Pana Przemka).

20.07.2007
12:38
[28]

Chupacabra [ Senator ]



tu pisza ze CoJ jest na mocno zmodyfikowanym starym enginie, nowy dopiero pisza od nowa, na nim sie ukaze Chrome 2.
"Silnik pozwala także na tworzenie gier na konsolę Xbox 360." -- wiec albo c++ albo c#

20.07.2007
12:41
[29]

elfik [ z wired ]

Pan Przemek napisał że najnowszy engine jest napisany w C++, więc jest już gotowy.

Przypuszczam że zarówno Chrome 2 jak i Warhounds będą właśnie opierać się na nim.

20.07.2007
14:04
smile
[30]

YogiYogi [ Konsul ]

Do zastosowań opisanych w jako cel pracy Chupacabra calkowicie nadaje sie C#.
Język jest prosty do nauki, zwalnia prograistę z troski o mase aspektów charakterystycznych dla C++ (zwalnianie pamieci, zabawy z pointerami i referencjami ) itd.

Co do wydajnosci - na poziomie na jakim bedzie jak sadze ten projekt zrealizowany - nie bedzie to mialo znaczenia ze C# jest odrobine wolniejszy od programu w C++. Tak naprawde beda liczyly sie algorytmy jakie Chupacabra sobie zastosuje do rozwiazania poszczegolnych kwestii projektowych.

Jezyk implementacji nalezy dobrac stosownie do projektu: jeśli głownym celem jest wydajność, i mamy czas na to aplikacje dobrze testować i optymalizować - to wybór padnie na C++.
Jesli palikacja musi powstac szybko, dzialac pewnie a głownym celem jest realizacja okreslonego zadania - wtedy uzyjemy C# lub Javy, aczkolwiek Jave wowczas, jesli istnieje koniecznosc uruchamiania tej aplikacji na roznych systemach operacyjnych.

Tak naprawdepo to robi si eetap analizy, by moc miedzy innymi wybrac sposob implementacji - znajac zalozenia i ograniczenia, mozna wybrac odpowiedni jezyk programowania.


Firmy tworzace gry/aplikacje graficzne korzystaja z faktu, ze tworza engine graficzny, ktory bedzie wykorzystywany w wiecej niz jednym projekcie. Stad moga sobie pozwolic na dlugi czas rozwijania, testowania i optymalizacji - bo to jest ich inwestycja. Dlatego silniki "duzych gier" robione sa glownie w C++ bo tam liczy sie kazdy ulamek zaosczedzonej sekundy - a to przeklada sie na mozliwosc dodania jeszcze jakiegos efektu do gry itd.

Przyklad z mojej firmy: stworzenie aplikacji serwera w Javie zajelo 30% czasu tworzenia takiej samej (realizujacej te same zadania) aplikacji w C++. Po prostu programisci C++ musieli rozpatrzyc dodatkowo mase rzeczy zwiazanych z samym jezykiem programowania zamiast skupic sie wylacznie na implementacji zadan serwera. Dzisiaj ten serwer bysmy pisali w C# - byloby szybciej i taniej.

Tak na zakonczenie:
- znam C/C++ bardzo dobrze
- znam Jave bardzo dobrze
- znam C# bardzo dobrze

Na miejscu Chupacabry wybralbym C# - szybki do nauki i opanowania, doskonale wspolgra z bibliotekami (odpada reczne "wgryzanie" sie w dll-ki), stosunkowo szybko zobaczy efekt, a ewentualnie poprawki i zmiany bedzie mogl szybko i sprawnie zaimplementowac bez przebudowy calego projektu.

Dyskusja: "bo ten jezyk jest szybszy" zawsze wywoluje usmiech na mojej twarzy i chec zadania pytania: "Szybsze ale co od czego i w jakich warunkach ?"

© 2000-2025 GRY-OnLine S.A.