1
0
mirror of https://github.com/lxsang/Diya-API.git synced 2024-12-30 21:38:22 +01:00
Diya-API/Diya/DiyaRendererContext.class.st

106 lines
1.9 KiB
Smalltalk
Raw Normal View History

2022-02-15 18:04:54 +01:00
Class {
#name : #DiyaRendererContext,
#superclass : #DiyaSingleton,
#instVars : [
'mouse',
'display',
'vbo',
2022-03-03 19:19:40 +01:00
'vao',
'texture0',
'projection',
'buffer'
2022-02-15 18:04:54 +01:00
],
#pools : [
'OpenGLConstants',
'OpenGLTypes'
],
#category : #'Diya-Graphics'
}
{ #category : #'instance creation' }
DiyaRendererContext class >> cleanUpInstance: singleton [
singleton destroy
]
2022-03-06 12:07:20 +01:00
{ #category : #'instance creation' }
DiyaRendererContext class >> maxFloatBufferSize [
2022-03-06 18:33:10 +01:00
^4096
2022-03-06 12:07:20 +01:00
]
2022-03-03 19:19:40 +01:00
{ #category : #accessing }
DiyaRendererContext >> buffer [
^ buffer
]
{ #category : #accessing }
DiyaRendererContext >> destroy [
vao delete.
vbo delete.
2022-03-03 19:19:40 +01:00
texture0 delete.
]
2022-02-15 18:04:54 +01:00
{ #category : #accessing }
DiyaRendererContext >> display [
^ display
]
{ #category : #accessing }
DiyaRendererContext >> display: anObject [
display := anObject
]
{ #category : #accessing }
DiyaRendererContext >> initialize [
super initialize.
vbo := OpenGLVertexBuffer new.
vao := OpenGLVertexArray new.
2022-03-03 19:19:40 +01:00
texture0 := OpenGLTexture fromUnit: 0.
vao bind.
vbo bind: GL_ARRAY_BUFFER.
2022-03-03 19:19:40 +01:00
projection := Array2D identity: 4.
2022-03-06 12:07:20 +01:00
buffer := FFIExternalArray externalNewType: GLfloat size: self class maxFloatBufferSize .
2022-03-03 19:19:40 +01:00
buffer autoRelease.
2022-03-06 12:07:20 +01:00
vbo data: GL_ARRAY_BUFFER data: nil size:self class maxFloatBufferSize*4 usage: GL_DYNAMIC_DRAW.
2022-03-03 19:19:40 +01:00
]
2022-02-15 18:04:54 +01:00
{ #category : #accessing }
DiyaRendererContext >> mouse [
^ mouse
]
{ #category : #accessing }
DiyaRendererContext >> mouse: anObject [
mouse := anObject
]
2022-03-03 19:19:40 +01:00
{ #category : #accessing }
DiyaRendererContext >> projection [
^ projection
]
2022-02-15 18:04:54 +01:00
{ #category : #'as yet unclassified' }
DiyaRendererContext >> resolution [
^ (display w) @ (display h)
]
2022-03-03 19:19:40 +01:00
{ #category : #accessing }
DiyaRendererContext >> texture0 [
^ texture0
]
{ #category : #'as yet unclassified' }
DiyaRendererContext >> useProjection: aClass [
projection := aClass fromDisplay: self display
]
{ #category : #accessing }
DiyaRendererContext >> vao [
^ vao
]
{ #category : #accessing }
DiyaRendererContext >> vbo [
^ vbo
]