Mam takie programistyczne pytanie, a w zasadzie problem:
Chcialbym napisac grę 3D w Direct3D.
Na codzień używam do tworzenia programów kompilatora Delphi, ponieważ jest dla mnie wygodny i łatwy, ale znam tez doskonale Visual C++ i bardzo często spotykam się z opinią, że najkorzystniej napisać jest gry w Visual C++.
Tymczasem:
Chciałem zrobić drobny test, napisałem dwa programy:
Jeden w C++:
#include <iostream>
#include <math.h>
#include <windows.h>
main(void)
{
int czas_old, czas_new, I;
float wartosc;
wartosc = 0;
czas_old = GetTickCount();
I = 0;
while (I < 20000000)
{
I++;
wartosc = sin(I);
}
czas_new = GetTickCount();
std::cout << czas_new - czas_old << std::endl;
std::cin >> I;
return 0;
}
I jego odpowiednik w Delphi:
program Project_01;
{$APPTYPE CONSOLE}
uses
windows;
var
czas_new, czas_old, I: integer;
wartosc: double;
begin
i := 0;
wartosc := 0;
czas_old := gettickcount;
while I < 20000000 do
begin
inc(I);
wartosc := sin(I);
end;
czas_new := gettickcount;
writeln(czas_new - czas_old);
readln(I);
end.
I czas wykonania petli "while" w C++ wynosi na moim procesorze ok. 2140 milisekund, zas ta sama petla stworzona w Delphi wykonuje sie w ok. 1750 milisekund.
Roznica nie jest w interpretacji funkcji Sinus, bo wystarczy zamiast niej zrobic jakies proste obliczenia, albo chociaz dodac do Wartosci 1 i efekt bedzie podobny - Delphi szybciej wykona wszelkie obliczenia...
Dlaczego wiec tworzy sie gry w Visual C++ gdzie obliczen jest cale mnostwo i liczy sie tam kazda "wolna" milisekunda?
Jak mam to zinterpetowac?
W jakim jezyku mam rozpoczac pisanie gry?