Gå til innhold

Render-til-tekstur i OpenGL (non-power-of-two)


Anbefalte innlegg

Okey..

 

Sliter for tiden litt med å få rendret til tekstur i OpenGL.

Bruker ATM glCopyTexImage2D() får å kopiere framebufferet til en tekstur.

 

Funker utverket det, men, det som er problemet er at jeg kun kan rendre til power-of-two teksturer (256x256, 512x512 etc) som blir litt upraktisk i de fleste tilfeller. Jeg ønsker å kunne rendre til f.eks 800x600.

 

Har såvidt prøvd noen metoder (har ikke prøvd meg på noen extensions ennå, men) uten å få noe annet resultat enn svart skjerm. Farsken, jeg får da lastet inn JPG/PNG-filer som er 800x600 uten at det er noe problem, så jeg skjønner ikke hvorfor det skal være noe problem å få rendret til en slik tekstur også.

 

Så, jeg spekulerer da på om det finnes noen lett måte å gjøre dette på?

Uten å bruke fullt av extensions og en haug med kode, eller blir dette så komplisert at man blir nødt til det?

 

Noen som har en kodesnutt liggende, kanskje? =)

 

 

Kjører GeForce4, btw.

Lenke til kommentar
Videoannonse
Annonse

Vel det stemmer at gluBuild2DMipmaps tar imot alt av formater, men glu baserer seg på ogl og så vidt jeg vet så sjekker ikke glu om du har nonpowerof2ext så glu mottar bilde for så omformatere det til powerof2.

 

Og en ting til jeg trekker muligens litt forhastede sluttinger, men siden mortizz snakker om å bruke 800x600 så ser det se ut som det er en eller annen for for lag man legger direkte på skjermen og hva skal man med mip når man hele tiden bruker originalen.

 

jeg kikket litt på nettet og fant dette i ext registeret

 

 

Should any enable or other state change be required to relax

the texture dimension restrictions?

 

STATUS: RESOLVED

 

RESOLUTION: No. The restrictions on texture dimensions in the

core OpenGL specification are enforced by errors. Extensions are

free to make legal and defined the error behavior of extensions.

This extension is really no different in that respect.

Lenke til kommentar
nå sa han jo at han ikke ville bruke extensions og lignende da, så da er kanskje gluBuild2DMipmaps litt enklere

5166813[/snapback]

bruker denne funksjonen når jeg lager teksturen. men når jeg etterpå skal rendre til den, blir det svart hvis jeg ikke bruker en power-of-2-oppløsning.

 

Dette er en extension, enten du liker det eller ikke, men den har vært implementert siden 1.1 eller noe

 

glEnable(GL_ARB_texture_non_power_of_two);

 

tror jeg skulle holde :) men har ikke prøvd, men det kan jo du gjøre.

 

det skal fungerer på de aller, aller, aller fleste skjermkort.

5167609[/snapback]

 

GL_ARB_texture_non_power_of_two må nok declares eller defineres først..

Fant en artikkel på gamedev om hvordan man bruker extensions, så kanskje jeg får det til etterhvert =)

Lenke til kommentar
GL_ARB_texture_non_power_of_two må nok declares eller defineres først..

Fant en artikkel på gamedev om hvordan man bruker extensions, så kanskje jeg får det til etterhvert =)

 

vel etter min tolkning av det som sto i nVidia sine dokumentasjoner av npot så trenger man ikke skru på noen ting, hvis kortet støter npot så funker alt, hvis ikke så får, man en error (som det kan være lurt å se etter).

det er ingen nye funsjoner ingen nye variabler som er deklarert i ext dokumentasjonen

Lenke til kommentar

okey..

 

hmm, synes det er rart, da.

har jo sett mange demoer som bruker render-til-tekstur for å få til effektene sine, så det ser ut som om demoscene-nerdene greier det på et eller annet vis. tror ikke de rendrer til teksturer med lavere oppløsning enn skjermen hvertfall. ser ikke sånn ut.

 

yesyes

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...