Jump to content

Sky Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate
Photo

Crysis 2+3 Animated Screensaver (OpenGL)


  • Please log in to reply
9 replies to this topic
Bentschi
  • Moderators
  • 120 posts
  • Last active: Sep 05 2014 02:12 AM
  • Joined: 26 Nov 2008

Wieder mal ein kleines OpenGL-Projekt...

 

Download:
Crysis-Screensaver.zip (~34 MB)

 

Der Screensaver stellt einen Nachbau des Menüs von Crysis 2 oder 3 (animiert) nach.

Nach langem grübeln hab ich eine Methode gefunden die Videos für Crysis 3 einzubinden.

Anfangs hatte ich JPEG-Bilder, die der Reihe nach geladen werden (wenig Arbeitsspeicher, dafür aber bombastisch viel CPU-Leistung benötigt)

Jetzt verwende ich komprimierte Texturen wofür zwar für Crysis 3 fast 400 MB Arbeitsspeicher benötigt wird, dafür ist aber die CPU-Anzeige bei mir auf 0.

Crysis 2 macht keine Probleme (sind ja nur Bilder, keine Videos).

 

Wer etwas ändern will und den neuen Screensaver kompiliert, muss nur die EXE in SCR umbenennen.

Ihr könnt auch an den Configs rumbasteln oder die Bilder ersetzen.

 

Wer das Video ersetzen will findet unter textures\crysis3 die Datei _compile.ahk

Damit wählt man zuerst den Ordner, der eine JPEG-Sequenz enthält (am besten durchnummerierte JPEGs).

Dann die Ausgabedatei, und die Bilder werden zu komprimierten Texturen in einem Archiv (selbst erfundener Dateityp).

 

Die Bilder sind vom Original-Spiel Gegrabt.

Das heißt ich besitze keine Rechte für die Bilder.

Aber ist halt von nem Fan für Fans (denke mal das ist nicht schlimm, sondern eher Werbung wink.png ).



nnnik
  • Members
  • 1625 posts
  • Last active: Jan 24 2019 02:19 PM
  • Joined: 28 Jul 2012

...Grossartige arbeit aber mein Internetechner unterstützt kein OpenGL 2.0

Ich nehm mal an das es nicht ohne geht oder ?


Visit the new forum ahkscript.org.

http://ahkscript.org


lasso
  • Members
  • 111 posts
  • Last active: May 19 2013 04:19 PM
  • Joined: 02 Nov 2012

jup geht nicht

ich hätte es mir auch gern angesehen

hab nur GL 1.2  (XP ohne SP)



Bentschi
  • Moderators
  • 120 posts
  • Last active: Sep 05 2014 02:12 AM
  • Joined: 26 Nov 2008

Neueste Grafik-Treiber installieren sollte helfen.



lasso
  • Members
  • 111 posts
  • Last active: May 19 2013 04:19 PM
  • Joined: 02 Nov 2012

der neueste grafiktreiber ist aber auch schon 12 jahre alt grin.png



nnnik
  • Members
  • 1625 posts
  • Last active: Jan 24 2019 02:19 PM
  • Joined: 28 Jul 2012

Meiner 7 Jahre aber das Ergebnis ist dasselbe grin.png

Ich hab auch nicht erwartet das ich das Programm auf meinem Internet Rechner starten könnte da dieser grade einmal 500MB RAM hat.


Visit the new forum ahkscript.org.

http://ahkscript.org


Bentschi
  • Moderators
  • 120 posts
  • Last active: Sep 05 2014 02:12 AM
  • Joined: 26 Nov 2008

Versuchs mal ohne der Beschränkung auf OpenGL 2.0

Denke mal mit 1.2 könnte es schon funktionieren.

Ich hatte zwar vor später noch mit Shader alles etwas zu verfeinern (Sollte ursprünglich ein Desktop-Hintergrund werden).

Daher das Limit auf 2.0

 

Edit: 500 MB wird eng für die Crysis 3 variante, aber Crysis 2 könnte laufen.

 

Edit2: Nein sorry, komprimierte Texturen funktionieren erst ab OpenGL 1.3



Bentschi
  • Moderators
  • 120 posts
  • Last active: Sep 05 2014 02:12 AM
  • Joined: 26 Nov 2008

Ersetz diese Funktion...

glGdipTexture(pBitmap, tex=0, alpha=0, luminance=0)
{
  static GdipGetImageWidth := ProcAddress("gdiplus", "GdipGetImageWidth")
  static GdipGetImageHeight := ProcAddress("gdiplus", "GdipGetImageHeight")
  static GdipBitmapLockBits := ProcAddress("gdiplus", "GdipBitmapLockBits")
  static GdipBitmapUnlockBits := ProcAddress("gdiplus", "GdipBitmapUnlockBits")
  static glTexImage2D := ProcAddress("opengl32", "glTexImage2D")
  r := 0
    e := DllCall(GdipGetImageWidth, "ptr", pBitmap, "uint*", w)
    e += DllCall(GdipGetImageHeight, "ptr", pBitmap, "uint*", h)
    if (e=0)
    {
        VarSetCapacity(rc, 16, 0)
        NumPut(w, rc, 8, "int")
        NumPut(h, rc, 12, "int")
        VarSetCapacity(bgpbmdata, 32, 0)
        if (DllCall(GdipBitmapLockBits, "ptr", pBitmap, "ptr", &rc, "uint", 0x0001, "int", 0x26200A, "ptr", &bgpbmdata)=0)
        {
            scan := NumGet(bgpbmdata, 16, "ptr")
            if (!tex)
                tex := glGenTexture()
            glBindTexture(tex)
            format := ((luminance) ? 0x1909 : 0x1907)+((alpha) ? 1 : 0)
            DllCall(glTexImage2D, "int", 0x0DE1, "int", 0, "int", format, "int", w, "int", h, "int", 0, "int", 0x80E1, "int", 0x1401, "ptr", scan)
            DllCall(GdipBitmapUnlockBits, "ptr", pBitmap, "ptr", &bgpbmdata)
            r := 1
        }
    }
    return (r) ? tex : 0
}

Damit werden die Texturen zwar nicht komprimiert, aber zumindest müsste die Crysis 2 variante funktionieren



nnnik
  • Members
  • 1625 posts
  • Last active: Jan 24 2019 02:19 PM
  • Joined: 28 Jul 2012

Crysis 2 lief einigermassen bei mir.
Es scheint 1.3.0 bei mir Installiert zu sein.


Visit the new forum ahkscript.org.

http://ahkscript.org


lasso
  • Members
  • 111 posts
  • Last active: May 19 2013 04:19 PM
  • Joined: 02 Nov 2012
bei mir läufts nicht
hab ein bischen rumgefummelt
entweder bin ich oder mein GL zu blöd
ich gebe es auf  happy.png