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:
parent
94d3a6266b
commit
13804205f8
@ -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.
|
||||
|
@ -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')
|
||||
|
@ -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
|
||||
]
|
||||
|
@ -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"
|
||||
|
@ -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.
|
||||
|
||||
]
|
||||
|
||||
|
@ -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 }
|
||||
|
@ -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.
|
||||
]
|
||||
|
Loading…
x
Reference in New Issue
Block a user