OpenGL - Vykresluje to, co je zadáno nejdřív, depth_test tam mám, tak čím to může být? – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

OpenGL - Vykresluje to, co je zadáno nejdřív, depth_test tam mám, tak čím to může být? – C / C++ – Fórum – Programujte.comOpenGL - Vykresluje to, co je zadáno nejdřív, depth_test tam mám, tak čím to může být? – C / C++ – Fórum – Programujte.com

 

Huge0
Návštěvník
4. 7. 2007   #1
-
0
-

Zdravím vás, zase mám problémek. Dělám relativně jednoduchou gamesku v OpenGL + WinApi. Problém je v tom, že při vykreslování se vykreslují v popředí ty útvary, které zadám později a to přesto, že by měly být hlouběji. Snažil jsem se na to přijít sám, ale marně. Přitom když jsem např. prohodil pořadí stěn krychle, tak všechno vypadalo, jak má. Většinu kódu jsem kopíroval z cz-nehe tutoriálů, jen jsem ho zahrnul do metod třídy.
Vážně nechápu, čím by to mohlo být. Teda vypadá to jako by tam chyběl depth test, ale ten tam mám.
Dám se inicializační funkci, ale myslím, že moc nepomůže, protože je OK.

bool game::init(){  // Nastaví svěla, blendig, smoothing a podobně...

if (!load_GL_textures()){ // Testuje úspěšnost funkce načítající textury.
MessageBox(NULL, TEXT("Nelze načíst textury, hra bude ukončena."), TEXT("Nastala chyba."), MB_OK|MB_ICONEXCLAMATION);
return false; // Nezdařilo se, navrať false.
}

// Načte display listy:
build_lists(); // Nakompiluje si několik útvarů. To by mělo fungovat.

glEnable(GL_TEXTURE_2D); // Povolí mapování textur.
glShadeModel(GL_SMOOTH); // Enable Smooth Shading
glClearColor(0.0f, 0.0f, 0.0f, 0.5f); // Black Background
glClearDepth(1.0f); // Depth Buffer Setup
glEnable(GL_DEPTH_TEST); // Enables Depth Testing
glDepthFunc(GL_LEQUAL); // The Type Of Depth Testing
glEnable(GL_LIGHT0); // Quick And Dirty Lighting (Assumes Light0 Is Set Up)
glEnable(GL_LIGHTING); // Enable Lighting
glEnable(GL_COLOR_MATERIAL); // Enable Material Coloring
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // Really Nice Perspective Calculations

// glLightfv(GL_LIGHT1, GL_AMBIENT, LightAmbient); // Setup The Ambient Light
// glLightfv(GL_LIGHT1, GL_DIFFUSE, LightDiffuse); // Setup The Diffuse Light
// glLightfv(GL_LIGHT1, GL_POSITION,LightPosition); // Position The Light
// glEnable(GL_LIGHT1); // Enables using light one.
return true; // Initialization went Ok.
};

Ten kód se určitě zavolá, protože je v inicializaci okna a pokud by selhal vylítnou message boxy. Určitě nikde nevypínám depth test.

Díky za každou radu.

Nahlásit jako SPAM
IP: ...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 26 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý