1
0
mirror of https://github.com/lxsang/Diya-API.git synced 2025-02-21 18:32:47 +01:00

update shader support

This commit is contained in:
Dany LE 2022-02-14 00:02:14 +01:00
parent 94d3a6266b
commit 13804205f8
7 changed files with 27 additions and 12 deletions

View File

@ -134,6 +134,7 @@ DiyaBoot >> render:sr [
[ (SDL2 pollEvent: event) > 0 ] whileTrue: [
self processEvent: event
].
OpenGL viewportX: 0 Y:0 W: display w H: display h .
sr render.
SDL2 glSwapWindow: window.
SDL2 delay: 50.

View File

@ -15,7 +15,7 @@ OpenGL class >> begin: mode [
{ #category : #accessing }
OpenGL class >> checkSymbol [
^#glBegin
^#glDrawArrays
]
{ #category : #'as yet unclassified' }
@ -43,6 +43,11 @@ OpenGL class >> end [
^ self ffiCall: #(void glEnd( void ))
]
{ #category : #'as yet unclassified' }
OpenGL class >> getIntegerv: pname data: data [
^self ffiCall: #(void glGetIntegerv( GLenum pname,GLint * data))
]
{ #category : #accessing }
OpenGL class >> libNames [
^#('libGL.so.1')

View File

@ -8,6 +8,7 @@ Class {
'GL_ACTIVE_UNIFORMS',
'GL_ACTIVE_UNIFORM_MAX_LENGTH',
'GL_ARRAY_BUFFER',
'GL_ARRAY_BUFFER_BINDING',
'GL_ATTACHED_SHADERS',
'GL_BYTE',
'GL_COLOR_BUFFER_BIT',
@ -77,7 +78,8 @@ OpenGLConstants class >> initCommonConstants [
GL_UNIFORM_BUFFER := 16r8A11.
GL_STATIC_DRAW := 16r88E4.
GL_FALSE := 0.
GL_TRUE := 1
GL_TRUE := 1.
GL_ARRAY_BUFFER_BINDING := 16r8894
]
{ #category : #'class initialization' }
@ -129,4 +131,5 @@ OpenGLConstants class >> initialize [
self initCommonMode.
self initCommonMask.
self initCommonShader.
self initCommonConstants
]

View File

@ -115,10 +115,12 @@ OpenGLSL class >> vertextShader [
{ #category : #compiling }
OpenGLSL >> checkStatus:status of: id [
|infoLength buffer|
|infoLength buffer result|
result := FFIExternalArray externalNewType: GLint size: 1.
infoLength := FFIExternalArray externalNewType: GLint size: 1.
infoLength autoRelease.
OpenGLSL getShaderiv: id parameterName: status params: nil.
result autoRelease.
OpenGLSL getShaderiv: id parameterName: status params: result getHandle.
OpenGLSL getShaderiv: id parameterName: GL_INFO_LOG_LENGTH params: infoLength getHandle.
(infoLength at:1) > 0 ifTrue: [
"report the error"

View File

@ -73,7 +73,7 @@ OpenGLVertexArray >> bind [
{ #category : #accessing }
OpenGLVertexArray >> delete [
OpenGLVertexArray deteleVertexArraysSize:1 arrays: vertexArrayID.
OpenGLVertexArray deteleVertexArraysSize:1 arrays: vertexArrayID getHandle.
vertexArrayID at: 1 put: -1
]
@ -92,7 +92,7 @@ OpenGLVertexArray >> initialize [
vertexArrayID := FFIExternalArray externalNewType: GLint size:1.
vertexArrayID autoRelease.
vertexArrayID at:1 put: -1.
OpenGLVertexArray genVertexArraysSize: 1 arrays: vertexArrayID.
OpenGLVertexArray genVertexArraysSize: 1 arrays: vertexArrayID getHandle.
]

View File

@ -36,6 +36,11 @@ OpenGLVertexBuffer class >> genVertexBuffersSize:n buffers: buffers [
^self ffiCall: #(void glGenBuffers( GLsizei n,GLuint * buffers))
]
{ #category : #'as yet unclassified' }
OpenGLVertexBuffer class >> getBufferData: target offset: offset size: size data: data [
^self ffiCall: #(void glGetBufferSubData(GLenum target,GLintptr offset,GLsizeiptr size,void * data))
]
{ #category : #'as yet unclassified' }
OpenGLVertexBuffer class >> namedBufferData:buffer size: size data: data usage: usage [
^self ffiCall: #(void glNamedBufferData(GLuint buffer,GLsizeiptr size,const void *data,GLenum usage))
@ -48,20 +53,20 @@ OpenGLVertexBuffer >> bind: target [
{ #category : #'as yet unclassified' }
OpenGLVertexBuffer >> data:target data: data usage: usage [
^OpenGLVertexBuffer bufferData: target size: data size data:data getHandle usage: usage
^OpenGLVertexBuffer bufferData: target size: data size*4 data:data getHandle usage: usage
]
{ #category : #'as yet unclassified' }
OpenGLVertexBuffer >> delete [
^OpenGLVertexBuffer deleteBuffersSize: 1 buffers: vertexBufferID
OpenGLVertexBuffer deleteBuffersSize: 1 buffers: vertexBufferID getHandle.
vertexBufferID free.
]
{ #category : #initialization }
OpenGLVertexBuffer >> initialize [
vertexBufferID := FFIExternalArray externalNewType: GLint size:1.
vertexBufferID autoRelease.
vertexBufferID at:1 put: -1.
OpenGLVertexBuffer genVertexBuffersSize: 1 buffers: vertexBufferID
OpenGLVertexBuffer genVertexBuffersSize: 1 buffers: vertexBufferID getHandle
]
{ #category : #initialization }

View File

@ -42,7 +42,7 @@ SimpleDiyaRenderer >> render [
{ #category : #deleting }
SimpleDiyaRenderer >> setup [
bufferData
bufferData
at: 1 put: -1.0;
at: 2 put: -1.0;
at: 3 put: 0;
@ -55,5 +55,4 @@ SimpleDiyaRenderer >> setup [
arrayBuffer bind.
vertexBuffer bind: GL_ARRAY_BUFFER.
vertexBuffer data: GL_ARRAY_BUFFER data:bufferData usage: GL_STATIC_DRAW.
shader compile.
]