dev.gamez.lv Forum Index dev.gamez.lv
Latvian Game Developers Community
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups 

Problēma ar 2D vai tekstūrām vai ko?

 
dev.gamez.lv Forum Index -> OpenGL
View previous topic :: View next topic  
Author Message
kovacs
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 16 Mar 2007
Posts: 51

PostPosted: Wed Dec 12, 2007 10:43 pm    Post subject: Problēma ar 2D vai tekstūrām vai ko?

Sveiki,

tātad esmu sācis šo to darīt ar OpenGL (ir ideja, ka moš vajag pārrakstīt GameLV engine pod OpenGL, itogo no sākuma vajag nelielu research...) un esmu dabūjis ka man šis tas parādās uz ekrāna un līdz ar to arī sākas problēmas. :D

Problēma ir tanī ka šī sample uz mana 2500+XP Athlon + GeForce FX5600 Ultra iet uz simpātiska 1 fps. Itogo es nesaprotu, vai es esmu kaut ko palaidis garām vai problēma ir videokartē, jo uz jaunākām GeForce'ēm viss ok. Ja neteksturizē un zīmē tikai baltus kvadrātus, tad arī fps ir ļoti ok.

Respektīvi visticamākais ka es kaut ko nezinu par tekstūrām un konkrētās kartes specifiku. Vienīgi ko tieši?

Idejas?

Sample atrodas http://yy.lv/download.php?f=87860
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Wed Dec 12, 2007 10:59 pm    Post subject:

Neesmu vēl apskatījis sampli, taču ir aizdoma, ka vainīgais varētu būt tekstūras izmērs. Standartā ir atļautas tikai 2-nieka pakāpes kā tekstūras platums un augstums - 64, 128, 256, ... ir labi izmēri, bet 100 un 200 slikti.

Ir OpenGL paplašinājumi GL_ARB_texture_rectangle un GL_ARB_texture_non_power_of_two, kas ļauj darboties arī ne ar 2-pakāpes tekstūrām. Taču lielākas savietojamības dēļ iesaku lietot tikai 2-pakāpes izmēra tekstūras.

Iesaku pēc katras OpenGL komandas lietot glGetError() funkciju. Tā pateiks vai iepriekšējais OpenGL izsaukums ir bijis veiksmīgs, vai arī nofeilojis. Un atgriezīs kļūdas tipu (nepareizs arguments, neatļautā vietā izsaukta funkcija, un tml). Tas ievērojami atvieglos atrast nepareizu OpenGL lietošanu. Ir arī automātisks tūlis - glIntercept, kas uzrādīs nepareizās vietas.

OpenGL 2.0 standarts pieprasa, lai GL_ARB_texture_non_power_of_two paplašinājums tiktu supportēts, tāpēc arī jaunākās geforces tev droši vien strādā. Bet uz tās vecākās tu dabū 1fps tāpēc, ka draiveris sāka emulēt OpenGL darbību, lai nodrošinātu šo paplašinājum, rezultātā tas nemaz neizmantoja hardwares akselerāciju.

Pie tam ar to 2.0 standartu nav tik skaisti kā gribētos. ATI izdomājis būt "gudrāks" - visas ati videokartes apgalvo, ka supportē 2.0 standartu, taču šo non_power_of_two paplašinājumu supportē tikai daļēji. Tāpēc arī uz jaunākajām ATI videokartēm ir lielas izredzes dabūt 1fps ar ne-2-nieka-pakāpes tekstūru izmēriem. Tur no liela svara ir uzstādītā tekstūras filtrācija un tektūras-koordināšu wrapošanas mode.
Back to top
View user's profile Send e-mail
kovacs
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 16 Mar 2007
Posts: 51

PostPosted: Thu Dec 13, 2007 11:29 am    Post subject:

tfu, shame on me! Biju par šito iedomājies (2nieku pakāpes) un likās ka esmu pamēģinājis, bet laikam tikai savās iedomās. :D

ok thx par atgādinājumu un paldies par ieteikumiem. :)

Tādā gadījumā nākamais jautājums par šo pašu tēmu, kurš variants ir "labāks", ja vajag tekstūru piem 100x200, bet dēļ šis fīčas jāizmanto 128x256. Izmantot atbilstošas tekstūru koordinātes vai taisīt proporcionāli lielākus kvadrātus (man kā nekā 2D un varu to atļauties Smile )?

Tas kāpēc baidos no tām tekstūru koordinātēm ir vai tur nesāksies problēmas ar noapaļošanu, kā rezultātā varētu kāds pixelis kaut kur pazust vai pienākt klāt vai arī tās ir tikai manas iedomas, kas ceļas no pieredzes trūkuma?

update: Ok, iečekošu GL_ARB_texture_rectangle, moš tas ir tas kas man vajadzīgs. Smile
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Thu Dec 13, 2007 11:55 am    Post subject:

ARB_texture_rectangle ir tieši tas, kas tev būtu vajadzīgs, jo tam tekstūru koordinātes jāpadod nenormalizētā veidā - nevis 0..1, bet 0..N.

Pikseļu pazušanai nevajadzētu būtu problēmām, ja pareizi norādīsi tekstūru koordinātes. Kad man ir vajadzējis ne-2-pakāpes izmēra tekstūras, tad es bildi glabāju vienā stūrī 2-pakāpes izmēra tekstūrai un attiecīgi pārrēķināju u un v koordinātes (nevis 0..1, bet 0..N/NN, kur NN - nākamā 2-nieka pakāpe, kas >= N).
Back to top
View user's profile Send e-mail
Kamazs
Guru
Guru


Joined: 17 Jan 2003
Posts: 829
Location: The glorious ancient city of Loja

PostPosted: Thu Dec 13, 2007 12:26 pm    Post subject:

A ARB_texture_rectangle ekstenshiona izmantoshana neatgriezh kaut kaadu vecaaku karshu lietotaajus?
_________________
...un es uzskatu, ka Fallout ir etalons
Back to top
View user's profile Send e-mail Visit poster's website
EDDY



Joined: 07 Oct 2005
Posts: 1610
Location: Dzimtā zeme, Latvija

PostPosted: Thu Dec 13, 2007 12:28 pm    Post subject:

Upppā, pārveidoju visas bildes uz 128*256 un skat kāds ātrums - pāri par 150 FPS..
_________________
Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Thu Dec 13, 2007 1:54 pm    Post subject:

Kamazs: Tas extensions ir supportēts sākot no GeForce2, Radeon7000 un Intel GMA900 kartēm. Ir tāda laba programmiņa OpenGL Extensoin Viewer. Ar to var apskatīties kuras videokartes supportē kurus extensionus, kā arī uz otru pusi.

Tik uzmanīgi ar to texture_rectangle. Tam ir savi nosacījumi:
1) mipmappings nav supportēts. Ortogrāfiskai 2d renderēšanai tas nav svarīgi.
2) nesupportē GL_REPEAT un GL_MIRRORED_REPEAT modes.
3) performance var gadīties drusku lēnāka uz vecākām videokartēm, jo iekšēji optimālāk ir darboties ar 2-pakāpēm.
Sīkāk lasīt te: http://www.opengl.org/registry/specs/ARB/texture_rectangle.txt
Back to top
View user's profile Send e-mail
kovacs
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 16 Mar 2007
Posts: 51

PostPosted: Thu Dec 13, 2007 4:13 pm    Post subject:

EDDY wrote:
Upppā, pārveidoju visas bildes uz 128*256 un skat kāds ātrums - pāri par 150 FPS..


Jā, man arī. Very Happy
Back to top
View user's profile
Display posts from previous:   
dev.gamez.lv Forum Index -> OpenGL All times are GMT + 2 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group