Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
Daclable
Založen: 11. 03. 2013 Příspěvky: 8
|
Zaslal: 4. říjen 2013, 17:00:34 Předmět: [SOLVED] [OpenGL] Nesprávne vykresľovanie objektu |
|
|
Zdravím,
trochu sa babrem s SFML a OpenGL, používajúc tento tutoriál.
Problém nastáva pri renderovaní 3D objektuobjektu.
Video
main.cpp
kód: |
// System libraries
#include <iostream>
// Graphics libraries
#include <GL/glew.h>
#include <GL/glut.h>
#include <SFML/Window.hpp>
// Custom classes and free functions
#include "../inc/main.hpp"
bool fullscreen = false;
bool vsync= true;
int main()
{
sf::Window window(sf::VideoMode(800, 600, 32), "SFML/NeHe OpenGL"); //
initGL();
resizeScene(800, 600);
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
if (event.type == sf::Event::Resized)
resizeScene(event.size.width, event.size.height);
switch (event.key.code)
{
case sf::Keyboard::Escape:
window.close();
break;
case sf::Keyboard::F:
fullscreen = !fullscreen;
window.create(fullscreen ? sf::VideoMode::getDesktopMode() : sf::VideoMode(800, 600, 32) , "SFML/NeHe OpenGL",
(fullscreen ? sf::Style::Fullscreen : sf::Style::Resize | sf::Style::Close));
resizeScene(window.getSize().x,window.getSize().y);
break;
case sf::Keyboard::F5:
vsync = !vsync;
break;
default:
break;
}
}
window.setVerticalSyncEnabled(vsync);
window.setActive();
drawScene();
window.display();
}
return EXIT_SUCCESS;
}
|
BTW - neuvažovali ste nad zavedením [spoiler][/spoiler]?
BTW2 - Vedľajším problémom je občasné samovoľné prepínanie z a do fullscreen módu a tatktiež samovoľné vypínanie.
Naposledy upravil Daclable dne 5. říjen 2013, 09:55:50, celkově upraveno 1 krát |
|
Návrat nahoru |
|
 |
perry

Založen: 28. 07. 2009 Příspěvky: 879
|
Zaslal: 4. říjen 2013, 17:06:21 Předmět: |
|
|
Vypadá to na otočený depth test
Zkus si pohrát s tímhle
kód: |
glClearDepth(1.0f); //nemá tady být 0.0 ?
|
kód: |
glDepthFunc(GL_LEQUAL);
|
Jinak taky může být otočená projekční matice. Pokud v OpenGL použiješ projekci z DX, tak to udělá tohle, když neotočíš depth testy
viz. tady http://www.ceske-hry.cz/forum/viewtopic.php?t=3791 _________________ Perry.cz |
|
Návrat nahoru |
|
 |
Daclable
Založen: 11. 03. 2013 Příspěvky: 8
|
Zaslal: 4. říjen 2013, 17:52:58 Předmět: |
|
|
kód: |
glClearDepth(1.0f);
glDepthFunc(GL_LEQUAL); |
Tieto funkcie sú tam práve od toho. Niečo však nie je v poriadku, keďže to funguje rovnako s
glClearDepth(0.0f) bez glDepthFunc(GL_LEQUAL)
aj s glClearDepth(1.0f) a s glDepthFunc(GL_LEQUAL).
Príslušný NeHe tutoriál to má vyriešené presne takto.
V českej verzii dokonca existuje príslušný obrázok na ktorom to zjavne funguje (well, možno je to len "dobre" natočené )
Nemyslím si, že je problém s projekčnou maticou. Mám to z NeHe tutoriálov (konvertovaných, jemne poupravených - prevažne len refactoring), skôr hľadám problém v mojich úpravách. Tie však s hĺbkou nemajú nič spoločného. |
|
Návrat nahoru |
|
 |
Val
Založen: 18. 06. 2013 Příspěvky: 19
|
Zaslal: 4. říjen 2013, 19:50:16 Předmět: |
|
|
Tak si stahni orginalni NeHe kod. Zkus ho a pravdepodobne bude fungovat spravne. Pak porovnej svuj kod s orginalem a voila... |
|
Návrat nahoru |
|
 |
if.then
Založen: 13. 04. 2008 Příspěvky: 579
|
|
Návrat nahoru |
|
 |
Daclable
Založen: 11. 03. 2013 Příspěvky: 8
|
Zaslal: 5. říjen 2013, 09:53:15 Předmět: |
|
|
if.then - Love ya!
Čudné je, že chlapíkovi, prekladajúcemu Nehe do SFML, kompletne ContextSettings chýba, zrejme v SFML 1.6 sa to riešilo inak.
Ešte raz Love ya! |
|
Návrat nahoru |
|
 |
|