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:
parent
94d3a6266b
commit
13804205f8
@ -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.
|
||||||
|
@ -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')
|
||||||
|
@ -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
|
||||||
]
|
]
|
||||||
|
@ -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"
|
||||||
|
@ -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.
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -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 }
|
||||||
|
@ -42,7 +42,7 @@ SimpleDiyaRenderer >> render [
|
|||||||
|
|
||||||
{ #category : #deleting }
|
{ #category : #deleting }
|
||||||
SimpleDiyaRenderer >> setup [
|
SimpleDiyaRenderer >> setup [
|
||||||
bufferData
|
bufferData
|
||||||
at: 1 put: -1.0;
|
at: 1 put: -1.0;
|
||||||
at: 2 put: -1.0;
|
at: 2 put: -1.0;
|
||||||
at: 3 put: 0;
|
at: 3 put: 0;
|
||||||
@ -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.
|
|
||||||
]
|
]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user