37x Forum

37x Forum (http://www.37x.de/forum.php)
-   Tutorials (http://www.37x.de/tutorials/)
-   -   Bilder in OGL (http://www.37x.de/tutorials/7582-bilder-ogl.html)

suxx- 12.05.2004 19:24

Bilder in OGL
 
//Ein Post aus dem Vip-Bereich nun als Tutroial erweitert also nicht wundern der Code ist Etwas weiter unten zu lesen also hf.

Hi Stefan

ich versuch gerade ein Bild einzulesen und das dann in OpenGl bzw. HL zu drawn. Hast du eine Idee oder weisst du wie es gehen könnte ?

also das einlesen versuch ich so
Code:

bground = LoadBitmap(NULL,"spieleterminewater.bmp");
 BYTE bgmap[sizeof(bground)];
 GetBitmapBits(
        bground,      // handle to bitmap
        sizeof(bground),    // number of bytes to copy
        bgmap    // buffer to receive bits
 );

nur für die ausgabe hab ich versucht glBitmap zu benutzten was jedoch zu keinem erfolg führte na vielleicht kannst du mir ja helfen oder auch die anderen jede antwort ist willkommen natürlich sachlich und zum thema.

NAFEST 14.05.2004 06:54

Hmmm,habe ich eigentlich noch nie gem8,aber hilft Dir das weiter
Code:

object background {
  bitmap1 = LoadBitmap("xxx.jpeg/bmp");
  bgfill = fillstyle {
      Bitmap(x,y,w,h,bitmap1);
  };
}


NAFEST 20.05.2004 23:44

Warum schliesst Ihr den Thread?! Wäre wirklich schlauer,obs gefunzt hat,oder wie Du es nun gem8 hast ?!

suxx- 20.05.2004 23:49

ich hat ihn selbst geschlossen ^^

aber hier die lösung ist zwar ein wenig kompliziert und geht über umwege ^^

Code:

void DrawAdver(void)
{
        glColor4f(color[0],color[1],color[2],color[3]);
        glEnable(GL_TEXTURE_2D);
        glShadeModel(GL_SMOOTH);
        glClearColor(0.0f, 0.0f, 0.0f, 0.5f);
        glClearDepth(1.0f);
        //glEnable(GL_DEPTH_TEST);
        //glDepthFunc(GL_LEQUAL);
        glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);

        //glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        glPushMatrix();
    glLoadIdentity();

        glPushAttrib(GL_ALL_ATTRIB_BITS);
       
        //glBindTexture(GL_TEXTURE_2D, texture[0]);
        glBindTexture(GL_TEXTURE_2D, texture[5]);
        glBegin(GL_QUADS);
                glTexCoord2f(0.0f, 0.0f); glVertex2f(vp[2]-20-128.0,vp[3]-128.0-30.0);
                glTexCoord2f(1.0f, 0.0f); glVertex2f(vp[2]-20,vp[3]-128.0-30.0);
                glTexCoord2f(1.0f, 1.0f); glVertex2f(vp[2]-20,vp[3]-30.0);
                glTexCoord2f(0.0f, 1.0f); glVertex2f(vp[2]-20-128.0,vp[3]-30.0);       
        glEnd();
        glPopAttrib();
        glPopMatrix();
}

Code:

AUX_RGBImageRec *LoadBMP(char *Filename)
{
        FILE *File=NULL;

        if (!Filename)
                return false;

        File=fopen(Filename,"r");

        if (File)
        {
                fclose(File);
                return auxDIBImageLoad(Filename);
        }

        return NULL;
}

Code:

int LoadGLTexture(int textureID, char *Filename)
{
        int Status=0;

        AUX_RGBImageRec *TextureImage[1];
       
        TextureImage[0] = NULL;
        //memset(TextureImage,0,sizeof(void *)*1);

        if (TextureImage[0]=LoadBMP(Filename))
        {
                Status=1;

                COLORREF Color;
                Color = RGB(255, 0, 255); //Setting the color we want transparent
                TextureImage[0]->data = CreateRGBA(TextureImage[0]->data, Color, TextureImage[0]->sizeX, TextureImage[0]->sizeY);//I will give you this function later

                glGenTextures(1, &texture[textureID]);
                glBindTexture(GL_TEXTURE_2D, texture[textureID]);
                //glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY, 0, GL_RGBA, GL_UNSIGNED_BYTE, TextureImage[0]->data);
                gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGBA, TextureImage[0]->sizeX, TextureImage[0]->sizeY, GL_RGBA, GL_UNSIGNED_BYTE, TextureImage[0]->data);
                glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
                glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
        }

        if (TextureImage[0])
        {
                if (TextureImage[0]->data)
                        free(TextureImage[0]->data);
                free(TextureImage[0]);
        }

        return Status;
}

Code:

unsigned char* CreateRGBA(unsigned char * oImage,COLORREF ZeroAlpha, int Width, int Height)
{
    if(oImage == NULL) return NULL; //Error Checking
    int nSize = (Height*Width) * 4;
    unsigned char * Image  = (unsigned char *) malloc(nSize); //Create Temporary Image Record
    if(Image == NULL) return NULL; //Error Checking
    for(int n=0,i=0; n < (Height*Width)*3; n+=3,i+=4) {
    Image[i] = oImage[n]; //
    Image[i+1] = oImage[n+1]; //Copies Origional Information to the Temporary one
    Image[i+2] = oImage[n+2]; //
    if(ZeroAlpha == -1) { Image[i+3]= (int)255; continue; } //Error Checking
    if(Image[i] == GetRValue(ZeroAlpha) && Image[i+1] == GetGValue(ZeroAlpha) && Image[i+2] == GetBValue(ZeroAlpha)) //Checks to see if the values are (255, 0, 255)
      Image[i+3] = 0; //If Yes then set the A Value to 0
    else Image[i+3] = 255; //Else to full
    }   
    return Image; //Return the new image
}

und hier das Resultat

diZzY 21.05.2004 01:00

das is ja süß :) aber ich würde das in der endversion schon über das geld packen. (hatteste mit sicherheit aber auch vor oda?)

subay 21.05.2004 19:35

Zitat:

Original von diZzY
das is ja süß :) aber ich würde das in der endversion schon über das geld packen. (hatteste mit sicherheit aber auch vor oda?)
warum? wenn du das menu auf machst ist es dir doch egal wie viel geld du hast!

suxx ich dachte du willst keien screens von version 2.0 public machen?

gruß subay

suxx- 21.05.2004 22:35

subay pss ... :)

diZzY 21.05.2004 22:51

konnte man sich jetz nicht denken, dass das die neue version is ;) vorallem mit dem menu da unten


Alle Zeitangaben in WEZ +2. Es ist jetzt 05:27 Uhr.

Powered by vBulletin