1) Je nejaka fuknce na otoceni pohledu na nejaky uhel? Ja nasel akorat D3DXMatrixLookAtLH a to dela otoceni na bod. A na to abych si delal funkci, ktera by vytvorila nejaky dummy bod a otocila pohled na nej jsem dost liny :)
2) Co znamena kdyz je nekde pred stringem napsano L? Treba: L"blabla"
3) Co znamena kdyz je za nejakym cislem f? Treba: 10.0f
4) Co znamena kdyz jsou nekde dve hvezdicky? Treba (void**)&p_Vertices?
To je asi zatim vsechno, myslim ze brzy pribydou dalsi :P
Fórum › C / C++
Par dotazu k DirectX a C++ obecne
To CommanderZ : 2) to znameza ze string sa sklada z sirokych znakov (UTF16)
3) 10.0f znamena 10.0 float
4) int ** ppInt -> to je pointer na pointer na premennu typu int a to vase (void **)&p_Vertices je to iste, adresu ukazatela na p_Vertices pretipujete na adresu adresy typu void
Diky. Jak ale muze byt adresa adresy? K cemu je to dobre?
To CommanderZ : adresa adresy, neboli pointer na pointer, lze napriklad pouzit jako ukazatel na 2rozmerne pole.
To CommanderZ : Ad 1) jediny jiny zpusob, ktery me napada, jak otocit pohled, nez pomoci zminene funkce, je pouzit globalni transformace. Ale to znam z OpenGL, v D3D s tim zkusenosti nemam. Pokud v D3D existuje neco jako RotateMatrix, ktera by se aplikovala na "svet".
To nickJartin : skutocne take cosi v d3d existuje, vcera som to dokonca videl na zazname s prednasky na FEL http://www.avc-cvut.cz/avc.php?id=1903 v jednom prezentovanom tutoriale (vizc vo videu), ale to je tak asi vsetko co vam otom mozem povedat, snad len ze to bolo celkom zaujimave.
Jo, to ze je tam moznost otocit svetem vim, ale prijde mi to jako trochu zvlastni, otacet svetem kdyz muzu otacet kamerou :D
Jak vlastne to otoceni sveta funguje? Opravdu to zmeni relativni polohu vsech objektu vuci pocatku (0,0,0)?
Achjo, nic otom nevíš, umíš jenom rychlý základy C++, a tedka si myslíš že doštaněš 200vyčerpávajících odpovědí na 200 stupidních otázek o C++ a Derectu?
V directu jsou 3 matice, world, projection, camera.
Světová matice se ti stará o poluhu světa což jsou tebou vykreslované prevky.
Projekční se stará o tu projekci, stará se o to so je za něcim aby nebylo vidět a věci vzadu aby byli menší (o tu se zatim tak starat nemusíš).
A poslední je pohledová - pozice kamery, tě asi tady bude zajímat.
Když chceš měnit nějaký čísla jednoduše ho násobíš jinou maticí. O proti OGL máš na ty transformace zajímaví funkce a v té knihovně je spousta typů, kter jsou skvělé, ale obávám se že jim jentak neporozumíš, potřebuješ trochu znát C++.
Minimálně tak, aby jsi chápal věci tady http://builder.cz/serial24.html i možná půlka. Ale s kurzem odtut si moc neškrtneš, je jenom o začínání.
Pokud chceš víc informací tak se ozvi na icq: 320476631 určitě bych ti ještě něco zdělil.
Podlesní dobou tady přibývá hromady otázek o programování her. Já o tomto píšu kurz a kus ho už mám, ovšem zatím je pouze pro členy z týmu. Dokud se nerozhodnu kam ho dát.
Diky, ten serial vypada dobre. O OOP vim vicemene jen to, co jsem si prines z PHP.
Jinak, klidne se domluv s vedenim tohohle serveru, tady urcite takovy dobre napsany serial oceni. A publicitu (nasvtevnost) i respekt tu budes mit zajistenou.
Zrovna na DirectX (a jeste k tomu v C++) se mi na netu zadne opravdu komplexni tutorialy najit nepodarilo
Achjo, nic otom nevíš, umíš jenom rychlý základy C++, a tedka si myslíš že doštaněš 200vyčerpávajících odpovědí na 200 stupidních otázek o C++ a Derectu?
Kdyz se podivas, tak jsem se ptal na veci, ktere jsou v tutorialech temer vzdycky brane tak jako "tak to proste je a smirte se s tim".
I kdyz zase vim, ze obhajovat se moc nema smysl, vim ze v C++ docela dost plavu a na sapani se na DX je krapet brzo. Ja si ale nemuzu pomoct, me hrani si v konzoli ukrutne nebavi :)
CommanderZ "Ja si ale nemuzu pomoct, me hrani si v konzoli ukrutne nebavi :)":
Tak jí trochu rozblázni :D
Hele takle, pokud se chceš na DX vrhnout, tak do toho jdi, jenom jde oto aby jsi pochopil důležité věci v OOP, a naučil se syntaxi. Pak by ti nemělo dělat problém skusit si DirectX, když už znáš Win32, tak to je celkem významné plus. Ale to oop je v DX už důležité, to tě bude bavit až zjistíš jak to je super, C++ je jazyk kterej ti umožní velice efektivního psaní, ta knihovna STL má několik skvělých nástrojů co ulehčuje mnoho práce, když je nepoznáš, tak se v tom budeš trápit. A nebudeš skoro schopnej něco pořádně nakódit. Navíc jenom skusíš na tý konzoli jak to funguje. Pak se s DX daj psát i velice zajímavé projekty efektivně a všechno co ses v konzoli naučil využiješ.
kdyžtak se ozvi na to ICQ.
Tak jsem se pri prochazeni toho serialu zasek pekne brzo :(
Mam tenhle jednoduchy kod, chtel jsem si na nem jenom vyzkouset par zakladnich vlastnosti OOP:
// OOP Test.cpp : Defines the entry point for the console application.
//
#include <iostream>
class trida{
private: int cislo;
public: engine(int n);
public: static void printText(char* text);
};
trida::trida(int n){
cislo=n;
};
void trida::printText(char* text){
std::cout<<"\n\n"<<text<<" "<<cislo<<"\n\n";
}
int main(void){
trida e(15);
char mychar[100];
std::cout<<"hello\n";
while(1){
int i=0;
while((mychar[i] = std::cin.get()) != '\n')
i++;
e.printText(mychar);
}
return 0;
}
Problem je v tom, je to hlasi
oop test.cpp(21) : error C2597: illegal reference to non-static member 'trida::cislo'
Nejhorsi na tom je, ze mi prijde, ze v tom serialu ma definice te clenske promenne i jeji pouziti udelane uplne stejne :(To je snad za trest!!!
Statická metoda, statická metoda je k tomu že se dá používat bez žádné instance. Například:
class Napis
{
public:
static void Hallo(){
cout<< "Hallo";
};
static void World(){
cout<< "World";
};
};
class Pisatko
{
public:
void Hallo(){
cout<< "Hallo";
};
void World(){
cout<< "World";
};
};
int main()
{
Napis.Hallo();
Napis.World();
Pisatko pis;
pis.Hallo();
pis.World();
return 0;
}
Obě třídy dělají to samé, ovšem není třeba dělat instanci když je to uplně zbytečné, a tak třída Napiš je v tomto Případě rozumější Než třída Písátko. Samozřejně že kod je blbost k ničemu, ale napsal jsem ho jako ukázku. Když jsou ale metody statické tak to jsou jako funkce bez třídy, neni nutné aby byly ve třídě.
K tvýmu vytvru:
Ty tam máš konstruktor, co nastaví přiřadí hodnotu proměnné cislo k tomu je třeba instance, bez ní by to nešlo, ale pak tam máš statickou metodu co tu proměnou používá, odkud jako má zjistit její hodnotu? Takto můžeš použít, ale musí to být statická proměnná a asi jedině konstantní.
Až na metodu engine, jsem te teda opravil, pamatuj si že metoda musí mít návratovej typ, je to vlastně funkce akorát je ve třídě, čili engine musí něco vracet jestli to má být meto a né proměná, no dal jsem pred ni void.
Tak asi takle:
#include <iostream>
class trida{
private:
int cislo;
public:
trida(int n); // konstruktor se píše taky sem!
void engine(int n); // tady nevim na to to má bejt a jestli to má něco vracet... Ale musíš dát návratovej typ!
void printText(char* text);
};
trida::trida(int n){
cislo=n;
};
void trida::printText(char* text){
std::cout<<"\n\n"<<text<<" "<<cislo<<"\n\n";
};
int main(void){
trida e(15);
char mychar[100];
std::cout<<"hello\n";
while(1){
int i=0;
while((mychar[i] = std::cin.get()) != '\n')
i++;
e.printText(mychar);
};
return 0;
};
:smile1: Sice to funguje, ale víš otom, že ty vykreslu hodnotu pointru (adresu) a né ten char? Proto asi nahrad:
void trida::printText(char* text){
std::cout<<"\n\n"<<text<<" "<<cislo<<"\n\n";
};
za
void trida::printText(char* text){
std::cout<<"\n\n"<<*text<<" "<<cislo<<"\n\n";
};
Pokud teda nechceš vykreslovat adresu. :)
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Par dotazu — založil Steve-o-
Pár dotazů k VS — založil yaqwsx
Pár dotazů — založil oxidián
GUI - pár dotazů — založil Hoptile12
Pár dotazů začátečníka — založil Marek
Moderátoři diskuze