Skip to content

Instantly share code, notes, and snippets.

@dirumahrafif
Created November 21, 2025 01:54
Show Gist options
  • Select an option

  • Save dirumahrafif/6e8afe7bc394aef8ee54ed90be5f9aae to your computer and use it in GitHub Desktop.

Select an option

Save dirumahrafif/6e8afe7bc394aef8ee54ed90be5f9aae to your computer and use it in GitHub Desktop.
Membuat titik dengan GLSL
from core.base import Base
from core.openGLUtils import OpenGLUtils
from OpenGL.GL import *
class Test(Base):
def initialize(self):
print("init...")
vsCode = """
void main()
{
gl_Position = vec4(0.0, 0.0, 0.0, 1.0);
}
"""
fsCode = """
out vec4 fragColor;
void main()
{
fragColor = vec4(1.0, 1.0, 0.0, 1.0);
}
"""
self.programRef = OpenGLUtils.initializeProgram(vsCode, fsCode)
vaoRef = glGenVertexArrays(1)
glBindVertexArray(vaoRef)
glPointSize(20)
OpenGLUtils.printSystemInfo()
def update(self):
glUseProgram(self.programRef)
glDrawArrays(GL_POINTS,0,1)
Test().run()
from OpenGL.GL import *
class OpenGLUtils(object):
@staticmethod
def initializeShader(shaderCode, shaderType):
shaderCode = '#version 330\n '+shaderCode
shaderRef = glCreateShader(shaderType)
glShaderSource(shaderRef,shaderCode)
glCompileShader(shaderRef)
compileSuccess = glGetShaderiv(shaderRef,GL_COMPILE_STATUS)
if not compileSuccess:
errorMessage = glGetShaderInfoLog(shaderRef)
glDeleteShader(shaderRef)
errorMessage = '\n' + errorMessage.decode('utf-8')
raise Exception(errorMessage)
return shaderRef
@staticmethod
def initializeProgram(vertexShaderCode,fragmentShaderCode):
vertexShaderRef=OpenGLUtils.initializeShader(vertexShaderCode, GL_VERTEX_SHADER)
fragmentShaderRef = OpenGLUtils.initializeShader(fragmentShaderCode, GL_FRAGMENT_SHADER)
programRef = glCreateProgram()
glAttachShader(programRef, vertexShaderRef)
glAttachShader(programRef,fragmentShaderRef)
glLinkProgram(programRef)
linkSuccess = glGetProgramiv(programRef, GL_LINK_STATUS)
if not linkSuccess:
errorMessage = glGetShaderInfoLog(programRef)
gDeleteProgram(programRef)
errorMessage = '\n'+errorMessage.decode('utf-8')
raise Exception(errorMessage)
return programRef
@staticmethod
def printSystemInfo():
print("Vendor: "+glGetString(GL_VENDOR).decode('utf-8'))
print("Renderer: "+glGetString(GL_RENDERER).decode('utf-8'));
print("OpenGL version supported: "+glGetString(GL_VERSION).decode('utf-8'))
print("GLSL version supportted: "+glGetString(GL_SHADING_LANGUAGE_VERSION).decode('utf-8'))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment