It is currently Sun Nov 17, 2019 5:57 pm

All times are UTC + 1 hour




Post new topic Reply to topic  [ 42 posts ]  Go to page Previous  1, 2, 3
Author Message
 Post subject: Re: OpenGL 3.3 Base (windows)
PostPosted: Thu Jan 24, 2019 11:07 pm 
Offline
New User
New User

Joined: Thu Jan 18, 2018 11:54 pm
Posts: 9
Hello,

I have the same request than Luis, can anyone post a valid link pleeeeeeeease?

thank you!


Top
 Profile  
Reply with quote  
 Post subject: Re: OpenGL 3.3 Base (windows)
PostPosted: Fri Jan 25, 2019 7:58 pm 
Offline
Addict
Addict
User avatar

Joined: Wed Aug 31, 2005 11:09 pm
Posts: 3693
Location: Italy
Sent through PM.

_________________
[ My little PureBasic review ]


Top
 Profile  
Reply with quote  
 Post subject: Re: OpenGL 3.3 Base (windows)
PostPosted: Fri Jan 25, 2019 11:56 pm 
Offline
Addict
Addict

Joined: Sat Jun 30, 2007 8:04 pm
Posts: 3362
I would like a copy too, please. :)


Top
 Profile  
Reply with quote  
 Post subject: Re: OpenGL 3.3 Base (windows)
PostPosted: Sat Jan 26, 2019 12:26 am 
Offline
Enthusiast
Enthusiast
User avatar

Joined: Sun Sep 11, 2016 2:17 pm
Posts: 564
Also interested 8)


Top
 Profile  
Reply with quote  
 Post subject: Re: OpenGL 3.3 Base (windows)
PostPosted: Sat Jan 26, 2019 12:33 am 
Offline
Addict
Addict
User avatar

Joined: Wed Aug 31, 2005 11:09 pm
Posts: 3693
Location: Italy
http://luis.no-ip.net/purebasic/forum/pbgl.zip

Will be removed in a few days ...

If I recall correctly not everything work out of the box, some fiddling is required.

_________________
[ My little PureBasic review ]


Top
 Profile  
Reply with quote  
 Post subject: Re: OpenGL 3.3 Base (windows)
PostPosted: Sat Jan 26, 2019 10:19 am 
Offline
Enthusiast
Enthusiast
User avatar

Joined: Sun Sep 11, 2016 2:17 pm
Posts: 564
@luis thank you :)


Top
 Profile  
Reply with quote  
 Post subject: Re: OpenGL 3.3 Base (windows)
PostPosted: Sun Jan 27, 2019 6:49 am 
Offline
Enthusiast
Enthusiast
User avatar

Joined: Tue Sep 22, 2009 10:41 pm
Posts: 455
I took too? Thank you.

I add this good c graphic overview :
http://www.songho.ca/opengl/index.html


Top
 Profile  
Reply with quote  
 Post subject: Re: OpenGL 3.3 Base (windows)
PostPosted: Mon Feb 18, 2019 12:56 pm 
Offline
New User
New User

Joined: Sun Oct 08, 2006 8:37 pm
Posts: 2
Hi luis,

unfortunately I missed the brief chance to get a copy of the code including necessaray structures, etc.
Following the OpenGL tutorial recommended in other forum posts (from DarkDragon), I made it all the way through creating VAOs, VBOs, EBOs as well as textures using the afore-mentioned and uniform values in shaders.

Tutorial: https://learnopengl.com/

Trying to get into matrix calculation (rotate and translate) I'm kind of lost and am happy to have found this thread. Is there a chance to receive a complete copy of the code to fill the gaps, please? I'd appreciate it very much!

That's how far I've come in applying textures to a simple rectangle (made up of 2 triangles) and changing transparency (up/down) as well as size (left/right).

Code:
;wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
; structures
;wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

Global points_vbo.i, colors_vbo.i, vao.i, ebo.i, texture.i, transparenz.f


Structure s_positions
  x.f
  y.f
  z.f
EndStructure

Structure s_colors
  r.f
  g.f
  b.f
EndStructure

Structure s_texture
  x.f
  y.f
EndStructure


Structure s_obj
  Pos.s_positions
  Col.s_colors
  Tex.s_texture
EndStructure


Structure Tindex
  a.l
  b.l
  c.l
EndStructure


;wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
; Identity Matrix
;wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

Dim ourTransform.f(3,3)
ourTransform(0,0)=1   :  ourTransform(0,1)=0  :   ourTransform(0,2)=0   :   ourTransform(0,3)=0 ;// first column
ourTransform(1,0)=0   :  ourTransform(1,1)=1  :   ourTransform(1,2)=0   :   ourTransform(1,3)=0 ;// second column
ourTransform(2,0)=0   :  ourTransform(2,1)=0  :   ourTransform(2,2)=1   :   ourTransform(2,3)=0 ; // third column
ourTransform(3,0)=0   :  ourTransform(3,1)=0  :   ourTransform(3,2)=0   :   ourTransform(3,3)=1 ;// fourth column


;wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
; vertex and index Arrays (Koordianten, Colors und Texture-Location)
;wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww


Global Dim Vertex.s_obj(4)

;// top right
Vertex(0)\Pos\x = 0.5   : Vertex(0)\Pos\y = 0.5   : Vertex(0)\Pos\z = 0.0
Vertex(0)\Col\r = 1.0   : Vertex(0)\Col\g = 0.0   : Vertex(0)\Col\b = 0.0
Vertex(0)\Tex\x = 1.0   : Vertex(0)\Tex\y = 1.0

; // bottom right
Vertex(1)\Pos\x = 0.5   : Vertex(1)\Pos\y = -0.5  : Vertex(1)\Pos\z = 0.0   
Vertex(1)\Col\r = 0.0   : Vertex(1)\Col\g = 1.0   : Vertex(1)\Col\b = 0.0   
Vertex(1)\Tex\x = 1.0   : Vertex(1)\Tex\y = 0.0

; // bottom left
Vertex(2)\Pos\x = -0.5  : Vertex(2)\Pos\y = -0.5  : Vertex(2)\Pos\z = 0.0
Vertex(2)\Col\r = 0.0   : Vertex(2)\Col\g = 0.0   : Vertex(2)\Col\b = 1.0
Vertex(2)\Tex\x = 0.0   : Vertex(2)\Tex\y = 0.0

; // top left
Vertex(3)\Pos\x = -0.5  : Vertex(3)\Pos\y = 0.5  : Vertex(3)\Pos\z = 0.0
Vertex(3)\Col\r = 1.0   : Vertex(3)\Col\g = 1.0  : Vertex(3)\Col\b = 0.0
Vertex(3)\Tex\x = 0.0   : Vertex(3)\Tex\y = 1.0


Global Dim Index.Tindex(2)

Index(0)\a = 0  : Index(0)\b = 1  : Index(0)\c = 3     ; // first triangle
Index(1)\a = 1  : Index(1)\b = 2  : Index(1)\c = 3     ; // second triangle


;wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
; pics for textures
;wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

UseJPEGImageDecoder()
UsePNGImageDecoder()

#ImagePath1 = #PB_Compiler_Home + "examples/3d/Data/Textures/"
LoadImage(1, #ImagePath1+"ValetCoeur.jpg") ;ValetCoeur.jpg")
*Buffer1 = EncodeImage(1)


#ImagePath2 = #PB_Compiler_Home + "examples/3d/Data/Textures/"
LoadImage(2, #ImagePath1+"smoke2.png")
*Buffer2 = EncodeImage(2)

transparenz.f = 0.0
Global minTransparenz.f = 0.0
Global maxTransparenz.f = 1.0

;**************************************************************************************

OpenWindow(0, 0, 0, 800, 600, "Tutorial Phase 7 - mehrere Texturen ")
OpenGLGadget(0, 10, 10, WindowWidth(0) , WindowHeight(0) , #PB_OpenGL_Keyboard)

;**************************************************************************************
IncludeFile "mypath\OpenGL_INCLUDE\Functions.pbi"
IncludeFile "mypath\OpenGL_INCLUDE\GLEXT.pbi"
;**************************************************************************************

glViewport_(0, 0, WindowWidth(0), WindowHeight(0))
glEnable_(#GL_DEPTH_TEST); // enable depth-testing


glGenVertexArrays (1, @vao) 
glGenBuffers(1, @points_vbo )
glGenBuffers(1, @ebo)       

glBindVertexArray(vao)

glBindBuffer(#GL_ARRAY_BUFFER, points_vbo)
glBufferData(#GL_ARRAY_BUFFER,32 * ArraySize(Vertex()),@Vertex(0), #GL_STATIC_DRAW) 

glBindBuffer(#GL_ELEMENT_ARRAY_BUFFER, ebo)
glBufferData(#GL_ELEMENT_ARRAY_BUFFER, 12*ArraySize(Index()), @Index(0), #GL_STATIC_DRAW)

; position attribute
glVertexAttribPointer(0, 3, #GL_FLOAT, #GL_FALSE, 8 * SizeOf(float), 0)
glEnableVertexAttribArray(0)     

; color attribute 
glVertexAttribPointer(1, 3, #GL_FLOAT, #GL_FALSE, 8 * SizeOf(float), 3 * SizeOf(float))
glEnableVertexAttribArray(1)     

; Texture Coords attribute
glVertexAttribPointer(2, 2, #GL_FLOAT, #GL_FALSE, 8 * SizeOf(float), 6 * SizeOf(float))
glEnableVertexAttribArray(2);


; Textur 1
glGenTextures_(1, @texture1)
glBindTexture_(#GL_TEXTURE_2D, texture1)
glTexParameteri_(#GL_TEXTURE_2D, #GL_TEXTURE_WRAP_S, #GL_CLAMP_TO_EDGE)
glTexParameteri_(#GL_TEXTURE_2D, #GL_TEXTURE_WRAP_T, #GL_CLAMP_TO_EDGE)
glTexParameteri_(#GL_TEXTURE_2D, #GL_TEXTURE_MIN_FILTER, #GL_LINEAR)
glTexParameteri_(#GL_TEXTURE_2D, #GL_TEXTURE_MAG_FILTER, #GL_LINEAR)
glTexImage2D_(#GL_TEXTURE_2D, 0, #GL_RGB, ImageWidth(1), ImageHeight(1), 0, #GL_BGR_EXT, #GL_UNSIGNED_BYTE, *Buffer1)
 ;glGenerateMipmap_(#GL_TEXTURE_2D)
FreeMemory(*Buffer1)

; Textur 2
glGenTextures_(2, @texture2)
glBindTexture_(#GL_TEXTURE_2D, texture2)
glTexParameteri_(#GL_TEXTURE_2D, #GL_TEXTURE_WRAP_S, #GL_REPEAT)
glTexParameteri_(#GL_TEXTURE_2D, #GL_TEXTURE_WRAP_T, #GL_REPEAT)
glTexParameteri_(#GL_TEXTURE_2D, #GL_TEXTURE_MIN_FILTER, #GL_LINEAR)
glTexParameteri_(#GL_TEXTURE_2D, #GL_TEXTURE_MAG_FILTER, #GL_LINEAR)
glTexImage2D_(#GL_TEXTURE_2D, 0, #GL_RGB, ImageWidth(2), ImageHeight(2), 0, #GL_BGR_EXT, #GL_UNSIGNED_BYTE, *Buffer2)
 ;glGenerateMipmap_(#GL_TEXTURE_2D)
FreeMemory(*Buffer2)


;wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
; prepare shaders
;wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

Define vertex_shader.s
Define fragment_shader.s
Define *fbuff
Define *vbuff


vertex_shader = "#version 330 core"+#CRLF$
vertex_shader + "layout(location = 0) in vec3 aPos;"+#CRLF$             ; the position variable has attribute position 0
vertex_shader + "layout(location = 1) in vec3 aColor;"+#CRLF$           ; the color variable has attribute position 1
vertex_shader + "layout(location = 2) in vec2 aTexCoord;"+#CRLF$        ; the color variable has attribute position 1
vertex_shader + "out vec3 ourColor;"+#CRLF$
vertex_shader + "out vec2 TexCoord;"+#CRLF$
vertex_shader + "uniform mat4 ourTransform;"+#CRLF$
vertex_shader + "void main() {"+#CRLF$
vertex_shader + "gl_Position = vec4(aPos, 1.0);"+#CRLF$
vertex_shader + "gl_Position = ourTransform * vec4(aPos, 1.0);"+#CRLF$
vertex_shader + "ourColor = aColor;"+#CRLF$
vertex_shader + "TexCoord = aTexCoord;"+#CRLF$
vertex_shader + "}"


fragment_shader = "#version 330 core"+#CRLF$
fragment_shader + "out vec4 FragColor;"+#CRLF$
fragment_shader + "in vec3 ourColor;"+#CRLF$
fragment_shader + "in vec2 TexCoord;"+#CRLF$
fragment_shader + "uniform float transparenz;"+#CRLF$
fragment_shader + "uniform sampler2D texture1;"+#CRLF$
fragment_shader + "uniform sampler2D texture2;"+#CRLF$

fragment_shader + "void main()"+#CRLF$
fragment_shader + "{"+#CRLF$
fragment_shader + "   FragColor = mix(texture(texture1, TexCoord), texture(texture2, TexCoord), transparenz);"+#CRLF$
;fragment_shader + "   FragColor = texture(texture2, TexCoord);"+#CRLF$
fragment_shader + "}"+#CRLF$

*vbuff = Ascii(vertex_shader)
*fbuff = Ascii(fragment_shader)


Global vs = glCreateShader(#GL_VERTEX_SHADER);
glShaderSource(vs, 1, @*vbuff, #Null) ;
glCompileShader(vs)

Global fs = glCreateShader(#GL_FRAGMENT_SHADER);
glShaderSource(fs, 1, @*fbuff, #Null);
glCompileShader(fs) 


;wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
; create shader program
;wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

Global shader_programme = glCreateProgram();
glAttachShader(shader_programme, vs)
glAttachShader(shader_programme, fs)
glLinkProgram(shader_programme)     

glDeleteShader(vs)
glDeleteShader(fs)

;wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
; fixed uniform values for shader
;wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
   

glUseProgram(shader_programme)  ; // don't forget to activate/use the shader before setting uniforms!
glUniform1i(glGetUniformLocation(shader_programme, "texture1"), 0)  ; muss nur einmal festgelegt werden
glUniform1i(glGetUniformLocation(shader_programme, "texture2"), 1)  ; die 1 hinten ist wichtig, sonst wird nur die erste Textur genommen!


;wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
; render loop
;wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww


SetActiveGadget(0)  ; make the openGLgadget active so the keyboard can be used with it

   Repeat
     Event = WaitWindowEvent()
     If Event = #PB_Event_Gadget And EventGadget() = 0
        If EventType() = #PB_EventType_KeyDown
            key = GetGadgetAttribute(0,#PB_OpenGL_Key )
           
            Select key
              Case  #PB_Shortcut_Up
                If transparenz < 1
                  transparenz = transparenz + 0.01
                EndIf
              Case  #PB_Shortcut_Down
                If transparenz > 0
                  transparenz = transparenz - 0.01
                EndIf
              Case  #PB_Shortcut_Left
                ourTransform(3,3) + 0.01
              Case  #PB_Shortcut_Right
                ourTransform(3,3) - 0.01
              Case  #PB_Shortcut_W; display wire Frame or solid frame
                If fill = 0
                  glPolygonMode_(#GL_FRONT_AND_BACK, #GL_LINE )
                  fill = 1
                Else
                  glPolygonMode_(#GL_FRONT_AND_BACK, #GL_FILL)
                  fill = 0
                EndIf
              Case  #PB_Shortcut_Escape ;  Esc key to exit
                quit = 1     
            EndSelect
          EndIf
        EndIf
       
;************************************************************************************** 
       
  glClearColor_(0.5, 0.5, 0.3, 1.0)
  glClear_(#GL_COLOR_BUFFER_BIT | #GL_DEPTH_BUFFER_BIT)
  glViewport_(0, 0, 800, 600) 
 
  glActiveTexture(#GL_TEXTURE0);
  glBindTexture_(#GL_TEXTURE_2D, texture1)
  glActiveTexture(#GL_TEXTURE1)
  glBindTexture_(#GL_TEXTURE_2D, texture2)
 
;wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
; dynamic uniform values für shader
;wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
 
  glUseProgram(shader_programme) 
  glUniform1f(glGetUniformLocation(shader_programme, "transparenz"), transparenz)
  glUniformMatrix4fv(glGetUniformLocation(shader_programme, "ourTransform"), 1, #GL_FALSE, @ourTransform(0,0));
 
;**************************************************************************************
 
  glBindVertexArray(vao)
  glDrawElements_(#GL_TRIANGLES, 6, #GL_UNSIGNED_INT, 0 )                                   
   SetGadgetAttribute(0, #PB_OpenGL_FlipBuffers, #True)
  Delay(16)
 
Until Event = #PB_Event_CloseWindow Or quit = 1


Thx skiller


Top
 Profile  
Reply with quote  
 Post subject: Re: OpenGL 3.3 Base (windows)
PostPosted: Mon Feb 18, 2019 3:20 pm 
Offline
Addict
Addict
User avatar

Joined: Wed Aug 31, 2005 11:09 pm
Posts: 3693
Location: Italy
@Skiller

Uploaded again. I just removed it. :lol:
Will be deleted soon and I will never upload it again in my life.
So people interested in it or willing to mirror it or whatever please grab it.

_________________
[ My little PureBasic review ]


Top
 Profile  
Reply with quote  
 Post subject: Re: OpenGL 3.3 Base (windows)
PostPosted: Mon Feb 18, 2019 4:10 pm 
Offline
New User
New User

Joined: Sun Oct 08, 2006 8:37 pm
Posts: 2
Thanks a lot, luis! I really appreciate that and hope everyone who'll ever need this grabs it this instant. :-)


Top
 Profile  
Reply with quote  
 Post subject: Re: OpenGL 3.3 Base (windows)
PostPosted: Thu Feb 21, 2019 10:58 pm 
Offline
New User
New User

Joined: Thu Feb 21, 2019 10:55 pm
Posts: 1
Im so interested in luis pbgl.zip-file.

Can anybody please send me this file!

Thx.

Andrew


Top
 Profile  
Reply with quote  
 Post subject: Re: OpenGL 3.3 Base (windows)
PostPosted: Sat Feb 23, 2019 1:13 am 
Offline
Enthusiast
Enthusiast
User avatar

Joined: Sun Sep 11, 2016 2:17 pm
Posts: 564
I uploaded it :)

PBGL:
https://www.dropbox.com/s/0zinefzf0om7jf9/pbgl.zip?dl=0


Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 42 posts ]  Go to page Previous  1, 2, 3

All times are UTC + 1 hour


Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
Jump to:  

 


Powered by phpBB © 2008 phpBB Group
subSilver+ theme by Canver Software, sponsor Sanal Modifiye