File tree Expand file tree Collapse file tree
src/com/nullprogram/lwjgl Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ package com .nullprogram .lwjgl ;
2+
3+ import java .util .HashSet ;
4+ import java .util .Set ;
5+ import lombok .Getter ;
6+ import org .lwjgl .LWJGLException ;
7+ import org .lwjgl .opengl .GL20 ;
8+
9+ public class Program {
10+
11+ @ Getter
12+ private final int handle = GL20 .glCreateProgram ();
13+
14+ private boolean disposed = false ;
15+
16+ @ Getter
17+ private Set <Shader > shaders = new HashSet <Shader >();
18+
19+ public Program add (Shader shader ) {
20+ if (shaders .add (shader )) {
21+ GL20 .glAttachShader (handle , shader .getHandle ());
22+ }
23+ return this ;
24+ }
25+
26+ public Program detach (Shader shader ) {
27+ if (shaders .remove (shader )) {
28+ GL20 .glDetachShader (shader .getHandle ());
29+ }
30+ }
31+
32+ public Program attrib (GlBuffer buffer , String name ) {
33+ return this ;
34+ }
35+
36+ public void link () throws LWJGLException {
37+ GL20 .glLinkProgram (handle );
38+ if (GL20 .glGetProgram (handle , GL20 .GL_LINK_STATUS ) == 0 ) {
39+ /* Link failed. */
40+ int len = GL20 .glGetProgram (handle , GL20 .GL_INFO_LOG_LENGTH );
41+ String info = GL20 .glGetProgramInfoLog (handle , len );
42+ throw new LWJGLException (info );
43+ }
44+ }
45+
46+ public void dispose () {
47+ if (!disposed ) {
48+ GL20 .glDeleteProgram (handle );
49+ }
50+ }
51+
52+ @ Override
53+ protected void finalize () {
54+ dispose ();
55+ }
56+ }
You can’t perform that action at this time.
0 commit comments