1
0
mirror of https://github.com/lxsang/Diya-API.git synced 2025-02-22 10:52:48 +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: [ [ (SDL2 pollEvent: event) > 0 ] whileTrue: [
self processEvent: event self processEvent: event
]. ].
OpenGL viewportX: 0 Y:0 W: display w H: display h .
sr render. sr render.
SDL2 glSwapWindow: window. SDL2 glSwapWindow: window.
SDL2 delay: 50. SDL2 delay: 50.

View File

@ -15,7 +15,7 @@ OpenGL class >> begin: mode [
{ #category : #accessing } { #category : #accessing }
OpenGL class >> checkSymbol [ OpenGL class >> checkSymbol [
^#glBegin ^#glDrawArrays
] ]
{ #category : #'as yet unclassified' } { #category : #'as yet unclassified' }
@ -43,6 +43,11 @@ OpenGL class >> end [
^ self ffiCall: #(void glEnd( void )) ^ 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 } { #category : #accessing }
OpenGL class >> libNames [ OpenGL class >> libNames [
^#('libGL.so.1') ^#('libGL.so.1')

View File

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

View File

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

View File

@ -73,7 +73,7 @@ OpenGLVertexArray >> bind [
{ #category : #accessing } { #category : #accessing }
OpenGLVertexArray >> delete [ OpenGLVertexArray >> delete [
OpenGLVertexArray deteleVertexArraysSize:1 arrays: vertexArrayID. OpenGLVertexArray deteleVertexArraysSize:1 arrays: vertexArrayID getHandle.
vertexArrayID at: 1 put: -1 vertexArrayID at: 1 put: -1
] ]
@ -92,7 +92,7 @@ OpenGLVertexArray >> initialize [
vertexArrayID := FFIExternalArray externalNewType: GLint size:1. vertexArrayID := FFIExternalArray externalNewType: GLint size:1.
vertexArrayID autoRelease. vertexArrayID autoRelease.
vertexArrayID at:1 put: -1. 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)) ^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' } { #category : #'as yet unclassified' }
OpenGLVertexBuffer class >> namedBufferData:buffer size: size data: data usage: usage [ OpenGLVertexBuffer class >> namedBufferData:buffer size: size data: data usage: usage [
^self ffiCall: #(void glNamedBufferData(GLuint buffer,GLsizeiptr size,const void *data,GLenum 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' } { #category : #'as yet unclassified' }
OpenGLVertexBuffer >> data:target data: data usage: usage [ 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' } { #category : #'as yet unclassified' }
OpenGLVertexBuffer >> delete [ OpenGLVertexBuffer >> delete [
^OpenGLVertexBuffer deleteBuffersSize: 1 buffers: vertexBufferID OpenGLVertexBuffer deleteBuffersSize: 1 buffers: vertexBufferID getHandle.
vertexBufferID free.
] ]
{ #category : #initialization } { #category : #initialization }
OpenGLVertexBuffer >> initialize [ OpenGLVertexBuffer >> initialize [
vertexBufferID := FFIExternalArray externalNewType: GLint size:1. vertexBufferID := FFIExternalArray externalNewType: GLint size:1.
vertexBufferID autoRelease.
vertexBufferID at:1 put: -1. vertexBufferID at:1 put: -1.
OpenGLVertexBuffer genVertexBuffersSize: 1 buffers: vertexBufferID OpenGLVertexBuffer genVertexBuffersSize: 1 buffers: vertexBufferID getHandle
] ]
{ #category : #initialization } { #category : #initialization }

View File

@ -55,5 +55,4 @@ SimpleDiyaRenderer >> setup [
arrayBuffer bind. arrayBuffer bind.
vertexBuffer bind: GL_ARRAY_BUFFER. vertexBuffer bind: GL_ARRAY_BUFFER.
vertexBuffer data: GL_ARRAY_BUFFER data:bufferData usage: GL_STATIC_DRAW. vertexBuffer data: GL_ARRAY_BUFFER data:bufferData usage: GL_STATIC_DRAW.
shader compile.
] ]