Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

kiba

Alter Hase

  • »kiba« ist der Autor dieses Themas

Beiträge: 327

Wohnort: NRW

Beruf: Azubi: Fach-Info. Anw.

  • Private Nachricht senden

1

31.08.2008, 14:29

laufzeit problem mit iluScale

hi ich bins wieder und hab ein problem mit openil unzwar mit der funktion
iluScale(ILuint Width, ILuint Height, ILuint Depth);

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void Bitmap::Scale(uint width,uint height,uint depth){
    this->width = width;
    this->height = height;
    this->depth = depth;
    ilBindImage(this->image);
    iluScale(this->width,this->height,this->depth);

    glBindTexture(GL_TEXTURE_2D, this->texture);

    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);

    //ilTexImage(this->width, this->height, this->depth, 3, this->format, IL_UNSIGNED_BYTE, this->data );
    glTexImage2D( GL_TEXTURE_2D,0,GL_RGBA,this->width,this->height,0,this->format,GL_UNSIGNED_BYTE,this->data);
}

ich benutzt visual studio
http://img139.imageshack.us/img139/3571/unbenanntjr4.png

und da kommt dieser fehler
hab auch schon versucht iluScale aus zu kommentieren aber da kommt immer noch der selbe fehler

Anonymous

unregistriert

2

31.08.2008, 14:32

Dein Debugger sagt dir doch schon in der roten Zeile unten Links "Schlechtes Ptr" (Ohje, deutsche Version, schäm dich :D).

Der Pointer ist nicht initalisiert und gibst den an OpenGL, das ist zum knallen Verdammt. Weise den erst richtig an, dann gehts.

kiba

Alter Hase

  • »kiba« ist der Autor dieses Themas

Beiträge: 327

Wohnort: NRW

Beruf: Azubi: Fach-Info. Anw.

  • Private Nachricht senden

3

31.08.2008, 16:35

hmmm anber in der varaible data is was drin den wenn ich die funktion in der main auslasse zeigt er das bild normal an

Anonymous

unregistriert

4

31.08.2008, 17:08

Der Debugger lügt nicht, da ist nichts drin ;)

kiba

Alter Hase

  • »kiba« ist der Autor dieses Themas

Beiträge: 327

Wohnort: NRW

Beruf: Azubi: Fach-Info. Anw.

  • Private Nachricht senden

5

01.09.2008, 16:35

hab es fast raus aber da is noch eine frage offen wie kann ich leere "bitmaps" erstellen also den data ein leeres feld mit einer bestimmt größe angeben

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

6

01.09.2008, 16:54

gibt doch sicher funktionen in OpenGL texturen zu erzeugen, zu sperren und die bytes per hand zu füllen :)

kiba

Alter Hase

  • »kiba« ist der Autor dieses Themas

Beiträge: 327

Wohnort: NRW

Beruf: Azubi: Fach-Info. Anw.

  • Private Nachricht senden

7

01.09.2008, 23:13

sry aber i finde irgent wie nix in der form

Powerpaule

Treue Seele

Beiträge: 162

Wohnort: Berlin

Beruf: Softwareentwickler

  • Private Nachricht senden

8

01.09.2008, 23:42

So zum Beispiel:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
GLuint  Texture;

int w = 256;
int h = 256;

GLubyte *bmp = new GLubyte[w*h*4];

for (int y = 0; y < h; y++) {
  for (int x = 0; x<w; x++)  {   
        bmp[4*((h-y-1)*w+x)+0] = 255;  // Rot

        bmp[4*((h-y-1)*w+x)+1] = 255;  // Grün

        bmp[4*((h-y-1)*w+x)+2] = 255;  // Blau

        bmp[4*((h-y-1)*w+x)+3] = 255;  // Alpha

  }
}

glGenTextures(1, &Texture);
glBindTexture(GL_TEXTURE_2D, Texture);

gluBuild2DMipmaps(GL_TEXTURE_2D,GL_RGBA,w,h,GL_RGBA,GL_UNSIGNED_BYTE,bmp);

glPixelStorei(GL_UNPACK_ALIGNMENT,1);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE,GL_MODULATE);
delete bmp;


Somit hättest du eine voll sichtbare, weiße Textur. Kannst du natürlich so füllen, wie du willst ;)
Die Paramter zur Darstellung etc. sind dort natürlich nicht unbedingt notwendig.

kiba

Alter Hase

  • »kiba« ist der Autor dieses Themas

Beiträge: 327

Wohnort: NRW

Beruf: Azubi: Fach-Info. Anw.

  • Private Nachricht senden

9

02.09.2008, 12:36

cool thx aber ein problem is da noch
da ich bei der leeren bitmap
GLubyte *bmp = new GLubyte[w*h*4];
benutzt und lass den speicher auch im destructor wieder frei
aber wenn ich eine datei laden(bild) muss ich die data aus den buffer laden mit einer funktion und diese gibt nur einen "normalen" zeigen an
keinen der aus den heap sachen ladet

Quellcode

1
2
3
4
5
ilLoadImage(this->filename)
...
..
this->data = ilGetData();  //returned ubyte*
..

und deshalb kommt ein fehler im desstructor

und ich hab noch ne kleine frage ist es möglich 2 images in einer texture zu verfrachten
also z.b. 2 images über einander in einer texture anzeigen

Werbeanzeige