Seite 6 von 13

Verfasst: 12.11.2006 12:37
von Andre
blbltheworm hat geschrieben:So ich hatte auch mal wieder ein wenig Zeit.
Da der CabBoy nach herunterladen der benötigten DLL recht leicht zu konvertieren war gibt es hier:
http://www.digital-joga.de.vu/Cab_Boy.pb
die unter PB4 lauffähige Version zum Download.
Danke, habs schon integriert. :D

@Alle: habe gestern auch noch den kompletten "Window"-Ordner fertiggestellt, das Erfreuliche dabei: mit den Vorarbeiten von blbtheworm und eigenen Konvertierungen ist kein offener Code übrig geblieben! :mrgreen:

Damit sind jetzt grad noch reichlich 180 Codes von den über 1300 des CodeArchivs übrig.

Verfasst: 12.11.2006 14:45
von Deeem2031
http://www.purearea.net/pb/CodeArchiv/G ... ureDemo.pb

Code: Alles auswählen

; www.PureArea.net
; Author: jammin
; Date: 26. November 2003

;Texturdemo
;quick and dirty hacked version
;programmed with Purebasic by jammin
;load textures with the buildin decoders of Purebasic :) )
;for the moment all textures must have the size of 2^n * 2^n !
;email : tmpa@gmx.de
Global width.l
Global height.l
Global start.b
Global opengl.l
IncludeFile "OpenGL.pbi"

UseJPEGImageDecoder()

;try the other formats!

;UsePNGImageDecoder()
;UseTIFFImageDecoder()
;UseTGAImageDecoder()

Procedure DrawCube2()
 
 glBegin_(#GL_Quads)
  
        One.f = 1.0
        Null.f = 0.0
        Minus.f = -1.0
        One1.f = 1.50
        Minus1.f = -1.0
        
        glNormal3f_( minus, null, null )
        glTexCoord2f_( null, null ) : glVertex3f_( minus1,minus1, one1 )
        glTexCoord2f_( one, null ) : glVertex3f_(  one1,minus1, one1 )
        glTexCoord2f_( one, one ) : glVertex3f_(  one1, one1, one1 )
        glTexCoord2f_( null, one ) : glVertex3f_( minus1, one1, one1 )
        
 glEnd_()
  
EndProcedure



Procedure _CreateTexture(pData.l)


  If pData = 0
    MessageBox_(0, "unable to load texture", ":textureLib", #MB_OK | #MB_ICONERROR)
  Else

    glGenTextures_(1, @texture)
    glBindTexture_(#GL_TEXTURE_2D, texture)
    glTexEnvi_(#GL_TEXTURE_ENV, #GL_TEXTURE_ENV_MODE, #GL_DECAL) 
    glTexParameteri_(#GL_TEXTURE_2D, #GL_TEXTURE_MIN_FILTER, #GL_LINEAR)  ; all of the above can be used
  
  EndIf


  glTexImage2D_(#GL_TEXTURE_2D, 0, #GL_RGB, width, height, 0, #GL_RGB, #GL_UNSIGNED_BYTE, pData)   ; Use when not wanting mipmaps to be built by openGL


 ProcedureReturn texture

EndProcedure 


Procedure loadTextureMem(memloc.l)
 
  img=CatchImage(0, ?opengl)

  width.l=ImageWidth(0) 
  height.l=ImageWidth(0)  
  size.l=ImageWidth(0) * ImageHeight(0)

  Dim bitmapImage.b (size.l*3) ;memorysize for rgb colors


  CreateImage(1,width ,height ) 

  StartDrawing(ImageOutput(0)) 
  DrawImage(img,0,0)  


   For y=0 To height-1 
      For x=0 To width-1 
       
        color=Point(x,y)   
        bitmapImage(i)=Red(color)
        i=i+1
        bitmapImage(i)=Green(color)
        i=i+1
        bitmapImage(i)=Blue(color) 
        i=i+1
      
      Next 
    Next 
 
   StopDrawing() 
 
  ; create texture
  texture = _CreateTexture(bitmapImage())

 

  ProcedureReturn texture

  ;clear memory
  FreeImage(img)
  Dim bitmapImage.b(0)

EndProcedure



Procedure HandleError (Result, Text$)
 If Result = 0
   MessageRequester("Error", Text$, 0)
   End
 EndIf
EndProcedure

Procedure DrawScene(hdc)
  
   If start=0
  
    glMatrixMode_(#GL_PROJECTION)
    glLoadIdentity_()
    ;gluPerspective_(45.0, 640.0/480.0, 1.0, 100.0)
    p1.d = 45.0
    p2.d = 640.0/480.0
    p3.d = 1.0
    p4.d = 100.0
    gluPerspective_(p1,PeekF(@p1+4), p2,PeekF(@p2+4) ,p3,PeekF(@p3+4), p4,PeekF(@p4+4))
    glMatrixMode_(#GL_MODELVIEW)

    opengl= LoadTextureMem(?opengl)
    
    start=1
  
   EndIf
  

  glEnable_(#GL_DEPTH_TEST);
  glDepthFunc_(#GL_LEQUAL);
  glShadeModel_(#GL_SMOOTH)
  glClearColor_( 0.0, 0.0, 0.0, 0.0 )
  glClear_(#GL_COLOR_BUFFER_BIT);
  glClear_(#GL_DEPTH_BUFFER_BIT)
  glMatrixMode_(#GL_MODELVIEW)
  glLoadIdentity_();            
   


glEnable_(#GL_TEXTURE_2D)


  

      glTranslatef_(-0.3,-0.20,-6.0)
      glBindTexture_(#GL_TEXTURE_2D, opengl)
   
      drawcube2()
  
  
      glDisable_(#GL_TEXTURE_2D)
  
  
  SwapBuffers_(hdc)
  
EndProcedure

pfd.PIXELFORMATDESCRIPTOR

FlatMode = 0 ; Enable Or disable the 'Flat' rendering

WindowWidth = 640 ; The window & GLViewport dimensions
WindowHeight = 480




hWnd = OpenWindow(0, 0, 0, WindowWidth, WindowHeight, "EchtZeit Texturdemo", #PB_Window_SystemMenu)

hdc = GetDC_(hWnd)

pfd\nSize = SizeOf(PIXELFORMATDESCRIPTOR)
pfd\nVersion = 1
pfd\dwFlags = #PFD_SUPPORT_OPENGL | #PFD_DOUBLEBUFFER | #PFD_DRAW_TO_WINDOW
pfd\dwLayerMask = #PFD_MAIN_PLANE
pfd\iPixelType = #PFD_TYPE_RGBA
pfd\cColorBits = 24
pfd\cDepthBits = 16 

pixformat = ChoosePixelFormat_(hdc, pfd)

HandleError( SetPixelFormat_(hdc, pixformat, pfd), "SetPixelFormat()")

hrc = wglCreateContext_(hdc)

HandleError( wglMakeCurrent_(hdc,hrc), "vglMakeCurrent()")

HandleError( glViewport_ (0, 0, WindowWidth, WindowHeight), "GLViewPort()")

While Quit = 0

Repeat 
EventID = WindowEvent()

Select EventID
Case #PB_Event_CloseWindow
Quit = 1
EndSelect

Until EventID = 0

DrawScene(hdc)
Wend

DataSection

opengl:

IncludeBinary "..\Examples\Sources\Data\terrain_detail.jpg"


EndDataSection

Verfasst: 12.11.2006 17:21
von Andre
@Deeem2031: Danke! Ist integriert.

Habe am "Windows_System"-Ordner weitergearbeitet. Ergebnisse siehe erster Post (ein neuer noch zu konvertierender Code ist hinzugekommen).

Verfasst: 12.11.2006 19:28
von Andre
Nachdem ich jetzt den ganzen Sonntag in die restliche Konvertierung des CodeArchivs investiert habe, kann ich folgendes vermelden:

- alle Ordner sind konvertiert :D
- Danke nochmal an alle, die bis hierhin geholfen haben - ein besonderes Dankeschön an 'blbtheworm' mit dem allergrößten Anteil
- von den insgesamt 1319 Codes im CodeArchiv sind damit derzeit noch ganze 28 Codes offen, wo es Probleme mit der Konvertierung gab (siehe dazu erstes Posting in diesem Thread)

Wer hier noch helfen kann, den bitte ich um seine/ihre Unterstützung. :allright:

Verfasst: 12.11.2006 20:09
von ts-soft
http://www.purearea.net/pb/CodeArchiv/W ... Folders.pb

Bissel Ähnlichkeit ist vorhanden :mrgreen:

Code: Alles auswählen

; English forum: http://purebasic.myforums.net/viewtopic.php?t=6563&start=45
; Author: high key
; Date: 26. September 2003
; OS: Windows
; Demo: No

Declare.s GetSpecialfolder(CSIDL) 


#CSIDL_DESKTOP = 0 
#CSIDL_PROGRAMS = 2 
#CSIDL_CONTROLS = 3 
#CSIDL_PRINTERS = 4 
#CSIDL_PERSONAL = 5 
#CSIDL_FAVORITES = 6 
#CSIDL_STARTUP = 7 
#CSIDL_RECENT = 8 
#CSIDL_SENDTO = 9 
#CSIDL_BITBUCKET = $A 
#CSIDL_STARTMENU = $B 
#CSIDL_DESKTOPDIRECTORY = $10 
#CSIDL_DRIVES = $11 
#CSIDL_NETWORK = $12 
#CSIDL_NETHOOD = $13 
#CSIDL_FONTS = $14 
#CSIDL_TEMPLATES = $15 



CompilerIf Defined(shItemID, #PB_Structure) = #False
Structure shItemID 
    cb.l 
    abID.b 
EndStructure
CompilerEndIf

CompilerIf Defined(ItemIDlist, #PB_Structure) = #False
Structure ItemIDlist 
    mkid.shItemID 
EndStructure 
CompilerEndIf


a$= "Start menu folder: " + GetSpecialfolder(#CSIDL_STARTMENU) 
b$= "Favorites folder: " + GetSpecialfolder(#CSIDL_FAVORITES) 
c$= "Programs folder: " + GetSpecialfolder(#CSIDL_PROGRAMS) 
d$= "Desktop folder: " + GetSpecialfolder(#CSIDL_DESKTOP) 
e$= "Startup folder: " + GetSpecialfolder(#CSIDL_STARTUP) 

    
MessageRequester("Info",a$+Chr(13)+b$+Chr(13)+c$+Chr(13)+d$+Chr(13)+e$,0) 

Procedure.s GetSpecialFolder(CSIDL.l)
  Protected *itemid.ITEMIDLIST = #Null
  Protected location.s = Space (#MAX_PATH)

  If SHGetSpecialFolderLocation_ (0, CSIDL, @*itemid) = #NOERROR
    If SHGetPathFromIDList_ (*itemid, @location)
      If Right(location, 1) <> "\" : location + "\" : EndIf
      ProcedureReturn location
    EndIf
  EndIf
EndProcedure
Gruß
Thomas

Verfasst: 12.11.2006 20:18
von Andre
@ts-soft: danke, der neue Code ist integriert. :)

Verfasst: 13.11.2006 23:53
von Andre
Um die Dinge vielleicht nochmal etwas übersichtlicher zu machen, nachfolgend eine Liste aller derzeit noch offenen Codes. Ich habe außerdem den originalen Autor in Klammern dahinter geschrieben.

http://www.purearea.net/pb/CodeArchiv/D ... tabases.pb (El_Choni)
http://www.purearea.net/pb/CodeArchiv/G ... ktypes2.pb (CyberRun8)
http://www.purearea.net/pb/CodeArchiv/G ... tArrows.pb (Danilo)
http://www.purearea.net/pb/CodeArchiv/G ... Images3.pb (Denis)
http://www.purearea.net/pb/CodeArchiv/G ... yColumn.pb (unknown)
http://www.purearea.net/pb/CodeArchiv/G ... nctions.pb (Freak)
http://www.purearea.net/pb/CodeArchiv/G ... Objects.pb (Franco)
http://www.purearea.net/pb/CodeArchiv/G ... Runtime.pb (Danilo)
http://www.purearea.net/pb/CodeArchiv/G ... ision3D.pb (Comtois)
http://www.purearea.net/pb/CodeArchiv/G ... -Editor.pb (LJ)
http://www.purearea.net/pb/CodeArchiv/G ... haBlend.pb (Mischa)
http://www.purearea.net/pb/CodeArchiv/G ... Matrix1.pb (Comtois)
http://www.purearea.net/pb/CodeArchiv/G ... Matrix2.pb (Psychophanta)
http://www.purearea.net/pb/CodeArchiv/G ... eIcons1.pb (freak)
http://www.purearea.net/pb/CodeArchiv/G ... eIcons2.pb (freak)
http://www.purearea.net/pb/CodeArchiv/G ... Example.pb (unknown)
http://www.purearea.net/pb/CodeArchiv/G ... unnel03.pb (traumatic)
http://www.purearea.net/pb/CodeArchiv/G ... TheCube.pb (jammin)
http://www.purearea.net/pb/CodeArchiv/G ... pScreen.pb (Stefan)
http://www.purearea.net/pb/CodeArchiv/I ... ck_Test.pb (GPI)
http://www.purearea.net/pb/CodeArchiv/I ... +delete.pb (ricardo)
http://www.purearea.net/pb/CodeArchiv/M ... /FNEval.pb (tejon)
http://www.purearea.net/pb/CodeArchiv/M ... al_Test.pb (tejon)
http://www.purearea.net/pb/CodeArchiv/W ... _SnagIt.pb (cecilcheah)
http://www.purearea.net/pb/CodeArchiv/W ... e_Win9x.pb (spangly)

Diese Liste habe ich heute auch im englischen Forum gepostet, um vielleicht noch mehr Helfer zu erreichen... :wink:

Verfasst: 14.11.2006 06:56
von Deeem2031
Das "(unknown)" is gut, es steht ja auch garnicht im Code drin "OpenWindow(0, 200, 200, 300, 300, #PB_Window_SystemMenu, "First OpenGL - by DarkDragon")" ;)

Verfasst: 18.11.2006 20:39
von Andre
Deeem2031 hat geschrieben:
Das "(unknown)" is gut, es steht ja auch garnicht im Code drin "OpenWindow(0, 200, 200, 300, 300, #PB_Window_SystemMenu, "First OpenGL - by DarkDragon")" ;)
Jaja, Meister :mrgreen:
Werds schonmal noch ändern - aber erst, wenn DD auch seinen Code auf PB v4 konvertiert hat... :twisted:

Im übrigen ist jetzt mit Hilfe des englischen Forums der Rest an 3D-Grafik-Codes konvertiert. Habe die Liste im ersten Posting aktualisiert.

Wie siehts mit weiterer Hilfe aus?

Verfasst: 18.11.2006 21:13
von Stefan
http://www.purearea.net/pb/CodeArchiv/G ... pScreen.pb

Code: Alles auswählen

; German forum: http://robsite.de/php/pureboard/viewtopic.php?t=2205&postdays=0&postorder=asc&start=60
; Author: Stefan Moebius
; Date: 14. September 2003

; Alternative for PB command FlipBuffers(), which doesn't depend on the refresh-rate of the monitor

; Ersatzbefehl für Flipbuffers() ,der nicht von der Refreshrate des Monitors abhängig ist.

;Funktioniert nur im Fullscreenmodus. 
#DDBLTFAST_WAIT=16
  
Procedure GetBackDDS() 
  !extrn _PB_DirectX_BackBuffer 
  !MOV Eax,[_PB_DirectX_BackBuffer] 
  ProcedureReturn 
EndProcedure 

Procedure GetPrimaryDDS() 
  !extrn _PB_DirectX_PrimaryBuffer 
  !MOV Eax,[_PB_DirectX_PrimaryBuffer] 
  ProcedureReturn 
EndProcedure 

Procedure FlipScreen() 
  *DDS.IDirectDrawSurface7=GetPrimaryDDS()
  While PeekMessage_(msg.MSG,0,0,0,#PM_REMOVE)
    TranslateMessage_(msg) 
    DispatchMessage_(msg) 
  Wend
  *DDS\BltFast(0,0,GetBackDDS(),0,#DDBLTFAST_WAIT)
EndProcedure