|
Programiranje Programski jezici, tehnike, alatke... |
|
Alatke vezane za temu | Vrste prikaza |
2.5.2013, 15:49 | #201 |
Kekule Mekule
|
Re: How to... C++
Release build, prvobitno ustanovio frapsom, 10 merenja i u svakom merenju je gornji kod davao ~4 fps-a manje, pa sam merio mikrosekunde za render (razlika vremena posle i pre render poziva) i gornjem kodu treba u proseku ~100 vise nego donjem.
NOTE: Ovo je deo rendera za zidove, ista situacija u loopu za pod/plafon. |
2.5.2013, 15:56 | #202 |
V.I.P. Programiranje
|
Re: How to... C++
Otvori preko nekog disasemblera oba fajla pa pogledaj šta se tačno generiše, ili postuj ovde. Jedno off pitanje – šta tačno ti radiš tu pa C++ kôdom prolaziš kroz color buffer?
Poslednja ispravka: Geomaster (2.5.2013 u 16:14) |
2.5.2013, 16:14 | #203 |
Kekule Mekule
|
Re: How to... C++
Pokusao sam preko 2 dissasemblera (pvdasm i boomerang) i oba pucaju u sred dekompajliranja. Radim Raycaster, pa crtam po lokalnom baferu koji posle uploadujem preko glDrawPixels - te mi je svaki frejm bitan.
|
2.5.2013, 16:16 | #204 | |
V.I.P. Programiranje
|
Re: How to... C++
Citat:
|
|
2.5.2013, 16:23 | #205 |
V.I.P. Programiranje
Član od: 29.8.2007.
Lokacija: Valjevo
Poruke: 1.349
Zahvalnice: 983
Zahvaljeno 371 puta na 280 poruka
|
Re: How to... C++
|
2.5.2013, 16:47 | #206 | |||
Kekule Mekule
|
Re: How to... C++
^Znam kako funkcionise to zato sam i merio frametime i razlika je u proseku 100 mikrosekundi, sto je smesno ali za ovakav tip aplikacije u jednom trenutku moze da znaci + sam overhead se stvara od redosleda nevezanih instrukcija.
@Geomaster: MinGW ali sam nasao da sacuva assembly u build logu pa kad procackam postujem. Takodje raycasting je realtime, verovatno si mislio na raytracing. Evo videa da vidis o cemu je stvar (ovo je najprimitivnija verzija raycastera, dosta za pocetak):
|
|||
Sledeći korisnik se zahvaljuje korisniku Andross na korisnoj poruci: | ||
Belphegor (2.5.2013) |
2.5.2013, 17:07 | #207 |
V.I.P. Programiranje
Član od: 29.8.2007.
Lokacija: Valjevo
Poruke: 1.349
Zahvalnice: 983
Zahvaljeno 371 puta na 280 poruka
|
Re: How to... C++
Svidja mi se taj medieval Wolfenstein 3d.
Mozes da implementiras taj algo sa SIMD instrukcijama, mada ces onda morati malo i da promenis strukturu podataka. |
2.5.2013, 17:17 | #208 |
V.I.P. Programiranje
|
Re: How to... C++
Jes, sa pola mozga radim od jutros, pogodi zašto... Ali i dalje mi nije jasno zašto bi, ako već radiš kroz GPU, radio ovakvu stvar kada možeš to isto postići kroz shadere. Ali ajd', odo da odspavam pa kad se vratim pogledaću ponovo, možda shvatim
|
2.5.2013, 17:28 | #209 |
Kekule Mekule
|
Re: How to... C++
Ukratko svodi se na "bajanje zrakova" (lol) i crtanje vertikalnih linija, otvoricu temu uskoro pa vise tamo.
Posle rvanja sa GDB-om koji odbija da radi sto mu se zapoveda, poredjenjem citavog assembly koda (naravno alatom) sam dosao do zakljucka da se generise mov viska. |
2.5.2013, 17:34 | #210 |
V.I.P. Programiranje
|
Re: How to... C++
^ Da, ali koliko vidim ovo što si ti postovao opušteno može da se uradi u šejderu. Ili grešim?
|
2.5.2013, 18:59 | #211 |
V.I.P. Programiranje
Član od: 29.8.2007.
Lokacija: Valjevo
Poruke: 1.349
Zahvalnice: 983
Zahvaljeno 371 puta na 280 poruka
|
Re: How to... C++
^Naravno da moze, samo sto bi algo bio malo drugaciji i bilo bi dosta brze, ali to mu verovatno nije bila poenta projekta?
|
7.5.2013, 14:57 | #212 |
Starosedelac
|
Re: How to... C++
Imam jedan problem. U pitanju je kombinacija ugnežđavanja klasa i njihovo nasleđivanje. Dakle neka imam klasu:
Kod:
class List { protected: class Node { friend class List; //implementacija cvora }; // Node *first, *last itd.... public: //neke metode za upravljanje listama }; Ono što mi pada na pamet i što bi bilo najelegantnije rešenje jeste da nasledim listu i napišem u izvedenoj listi novu ugneždenu klasu Node, a da ne menjam metode same klase. Da li bi onda one pri pozivu imena Node pristupale klasi Node ugneždenoj u izvedenoj ili u baznoj klasi? Npr. ako neka metoda poziva Node(); koji konstruktor bi zapravo bio pozvan? I naravno, da li je uopšte moguće definisati klasu istog imena ako je već ugneždena u baznoj klasi? |
7.5.2013, 18:05 | #213 |
V.I.P. Programiranje
Član od: 29.8.2007.
Lokacija: Valjevo
Poruke: 1.349
Zahvalnice: 983
Zahvaljeno 371 puta na 280 poruka
|
Re: How to... C++
Zar nije bolje u ovom slucaju da Node bude templejt parametar List-i?
Kod:
template< typename Node > class List {...}; S'tim da su imena metoda Node-a ista koje pozivas sa List-om.? |
8.5.2013, 22:42 | #214 |
Starosedelac
|
Re: How to... C++
Pišem kernel za neki projekat na faksu. Korišćenje templejta je previše high level za tako nešto. Generalno trebalo bi da se piše u C-u, ali kao eto da nam olakšaju pošto nam je prvo susretanje sa sistemskim softverom radimo u c++u da ne moramo sami da realizujemo tabele virtuelnih funkcija za neke podsisteme, da vučemo gomilu pokazivača na funkcije i sl. U pitanju je borland c++, procesor 8086. Dosta često mora da se pribegava i asembleru za neke stvari tako da je sama pomisao na template nekako neadekvatna u ovom kontekstu . Ne znam čak ni da li bi moglo da se koristi, ali da, definitivno bi bilo elegantno da je u pitanu neki aplikativni softver.
Konkretno liste koristim da bih pamtio koje su mi niti spremne za rad, a koje blokirane. Kod blokiranih mi je potrebno još po neko dodatno polje u čvoru i da redefinišem po koju metodu, pa mi je nekako nasleđivanje prirodno palo na pamet. Ako ništa drugo, napisaću potpuno dve različite nezavisne klase, što bi funkcionalno i bilo bolje, ali eto... volim objektnu logiku . Mada kažu da se ne treba mnogo navikavati na nju u ovakvom softveru. |
14.5.2013, 0:25 | #215 | |
Član
Član od: 12.6.2006.
Poruke: 112
Zahvalnice: 19
Zahvaljeno 6 puta na 6 poruka
|
Re: How to... C++
Citat:
Nsam bas razumeo sto bi izvodio klasu posebno za spremne i blokirane niti? Sto ne stavis da imaju ista polja i metode (potpuno iste klase da su) a da imas jednu listu svih niti i pored toga listu onih koje spavaju, spremne ionako idu u Scheduler, a blokirane pamti onaj ko ih je blokirao (nesto tipa "lista onih koji cekaju na mene") i samo dodas polje status u Thread koje kaze da li je READY, BLOCKED, RUNNIG... za sve to ti treba jedna lista koja prihvata klasu niti. |
|
Sledeći korisnik se zahvaljuje korisniku Patrick na korisnoj poruci: | ||
Lucic Nemanja (15.5.2013) |
14.5.2013, 19:44 | #216 | |
Starosedelac
|
Re: How to... C++
Citat:
|
|
14.5.2013, 23:16 | #217 |
Član
Član od: 12.6.2006.
Poruke: 112
Zahvalnice: 19
Zahvaljeno 6 puta na 6 poruka
|
Re: How to... C++
E, bas tako! Nista se ne sekiraj sto se to polje nece koristiti osim kad nit ne spava. To je zanemarljivo. Ako ces da vodis racuna o resursima, pre svega o vremenu, onda ne zaboravi da listu niti koje spavaju odrzavas sortiranom kad god ubacujes neku novu nit u tu listu i tako da ti nit koja prva treba da se probudi bude na pocetku liste i ima to polje jos koliko joj je ostalo da spava i SAMO njega dekrementiras kad god ti otkuca tajmer, a za ostale niti pamtis u tom istom polju vremensku RAZLIKU u odnosu na ovu nit sa pocetka liste... pretpostavljam da si vec video negde slican algoritam i da znas na sta mislimm... To ce da bude bas efikasnije jer neces svaki otkucaj tajmera da prolazis kroz celu listu i da dekrementiras intervale, niti da proveravas da li je svaka dosla do nule, nego samo da li je prva dosla do nule i nikako ne zaboravi da ako jeste nula, proveris i da li su one do nje isto na nuli jer ako su imale isti period spavanja kao prva nit, onda ce njihova razlika u spavanju da bude isto nula pa i njih probudi.
Srecno! |
Sledeći korisnik se zahvaljuje korisniku Patrick na korisnoj poruci: | ||
Lucic Nemanja (15.5.2013) |
15.5.2013, 1:38 | #218 |
Starosedelac
|
Re: How to... C++
Da, da, već sam obavešten na vreme o tom algoritmu . Hvala u svakom slučaju!
|
25.5.2013, 16:10 | #219 |
Novi član
Član od: 24.5.2013.
Poruke: 1
Zahvalnice: 1
Zahvaljeno 0 puta na 0 poruka
|
Re: How to... C++
Pozdrav, totalni sam pocetnik, od juce sam poceo da istrazujem c++ i uz pomoc interneta poceo sam da shvatam neke osnovne komande itd itd, i sad pokusavam da napravim program koji ce mi proveriti da li je broj koji unesem deljiv sa 2 ili nije, pa mi ne ide.. Ako moze neko da ispise kod na brzinu verujem da nije slozen postupak za vas znalce.
Pravim proste programe za izracunavanje, ispisivanje testa, isprobavam neke moje gluposti sa if, if else, svim tim kombinacijama ali nesto slozenije ne mogu da uradim. I ako neko zna neki sajt sa pocetnickim problemima za resavanje i zadacima za vezbanje, prostim tutorijalima c++, ili pak ima neki savet za napredovanje u c++ bio bih zahvalan da okaci i podeli sa nama neznalcima. Hvala |
Bookmarks sajtovi |
Tagovi |
c++, how to, pomoc, programiranje |
|
|