Skip to content

Instantly share code, notes, and snippets.

@bwilkins
Created September 30, 2013 11:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bwilkins/6762310 to your computer and use it in GitHub Desktop.
Save bwilkins/6762310 to your computer and use it in GitHub Desktop.
Apitrace of simple OpenGL app in Go (doesn't work) vs virtually the same app in C/Objective-C (works). Only thing I can see that's really overly different is the pointer length in the go application, which appear to be 2 bytes(?) shorter...
0 CGLSetOption(pname = kCGLGOUseErrorHandler, param = 0) = kCGLNoError
1 CGLChoosePixelFormat(attribs = {kCGLPFADoubleBuffer, kCGLPFAOpenGLProfile, 12800, kCGLPFAColorSize, 24, kCGLPFAAlphaSize, 8, 0}, pix = &0x17a1a400, npix = &2) = kCGLNoError
2 CGLSetOption(pname = kCGLGOUseErrorHandler, param = 0) = kCGLNoError
3 CGLCreateContext(pix = 0x17a1a400, share = NULL, ctx = &0x1900ec00) = kCGLNoError
4 CGLSetParameter(ctx = 0x1900ec00, pname = 1236, params = &396468976) = kCGLNoError
5 CGLSetSurface(ctx = 0x1900ec00, cid = 0x1ad77, wid = 11190, sid = 1211499212) = kCGLNoError
6 CGLSetCurrentContext(ctx = 0x1900ec00) = kCGLNoError
7 glViewport(x = 0, y = 0, width = 800, height = 600)
8 glScissor(x = 0, y = 0, width = 800, height = 600)
9 CGLDescribePixelFormat(pix = 0x17a1a400, pix_num = 0, attrib = kCGLPFAAccelerated, value = &1) = kCGLNoError
10 CGLDescribePixelFormat(pix = 0x17a1a400, pix_num = 0, attrib = kCGLPFAAlphaSize, value = &8) = kCGLNoError
11 CGLDescribePixelFormat(pix = 0x17a1a400, pix_num = 0, attrib = kCGLPFAColorSize, value = &32) = kCGLNoError
12 CGLDescribePixelFormat(pix = 0x17a1a400, pix_num = 0, attrib = kCGLPFADepthSize, value = &0) = kCGLNoError
13 CGLDescribePixelFormat(pix = 0x17a1a400, pix_num = 0, attrib = kCGLPFAStencilSize, value = &0) = kCGLNoError
14 CGLDescribePixelFormat(pix = 0x17a1a400, pix_num = 0, attrib = kCGLPFAAccumSize, value = &0) = kCGLNoError
15 CGLDescribePixelFormat(pix = 0x17a1a400, pix_num = 0, attrib = kCGLPFAAuxBuffers, value = &0) = kCGLNoError
16 CGLDescribePixelFormat(pix = 0x17a1a400, pix_num = 0, attrib = kCGLPFAStereo, value = &0) = kCGLNoError
17 CGLDescribePixelFormat(pix = 0x17a1a400, pix_num = 0, attrib = kCGLPFASamples, value = &0) = kCGLNoError
19 glGetIntegerv(pname = GL_CONTEXT_FLAGS, params = &1)
20 glGetIntegerv(pname = GL_CONTEXT_PROFILE_MASK, params = &1)
21 glClear(mask = GL_COLOR_BUFFER_BIT)
22 CGLFlushDrawable(ctx = 0x1900ec00) = kCGLNoError
29 glCreateShader(type = GL_VERTEX_SHADER) = 1
30 glShaderSource(shader = 1, count = 1, string = &"#version 150
in vec3 vert;
void main() {
// Does not alter vertices at all
gl_Position = vec4(vert, 1.0f);
}", length = &114)
31 glCompileShader(shader = 1)
32 glGetShaderiv(shader = 1, pname = GL_COMPILE_STATUS, params = &1)
33 glCreateShader(type = GL_FRAGMENT_SHADER) = 2
34 glShaderSource(shader = 2, count = 1, string = &"#version 150
out vec4 finalColor;
void main() {
//Set every drawn pixel to white
finalColor = vec4(1.0f, 1.0f, 1.0f, 1.0f);
}", length = &131)
35 glCompileShader(shader = 2)
36 glGetShaderiv(shader = 2, pname = GL_COMPILE_STATUS, params = &1)
37 glCreateProgram() = 3
38 glAttachShader(program = 3, shader = 1)
39 glAttachShader(program = 3, shader = 2)
40 glBindAttribLocation(program = 3, index = 0, name = "vert")
41 glLinkProgram(program = 3)
42 glDetachShader(program = 3, shader = 1)
43 glDetachShader(program = 3, shader = 2)
44 glGetProgramiv(program = 3, pname = GL_LINK_STATUS, params = &1)
45 glDeleteShader(shader = 1)
46 glDeleteShader(shader = 2)
47 glGenVertexArrays(n = 1, arrays = &1)
48 glBindVertexArray(array = 1)
49 glGenBuffers(n = 1, buffer = &1)
50 glBindBuffer(target = GL_ARRAY_BUFFER, buffer = 1)
51 glBufferData(target = GL_ARRAY_BUFFER, size = 36, data = blob(36), usage = GL_STATIC_DRAW)
52 glGetAttribLocation(program = 3, name = "vert") = 0
53 glEnableVertexAttribArray(index = 0)
54 glVertexAttribPointer(index = 0, size = 4, type = GL_FLOAT, normalized = GL_FALSE, stride = 0, pointer = NULL)
55 glBindBuffer(target = GL_ARRAY_BUFFER, buffer = 0)
56 glBindVertexArray(array = 0)
57 glClearColor(red = 0, green = 0, blue = 0, alpha = 1)
58 glClear(mask = GL_COLOR_BUFFER_BIT)
59 glUseProgram(program = 3)
60 glBindVertexArray(array = 1)
61 glDrawArrays(mode = GL_TRIANGLES, first = 0, count = 3)
62 glBindVertexArray(array = 0)
63 glUseProgram(program = 0)
64 CGLFlushDrawable(ctx = 0x1900ec00) = kCGLNoError
65 glClearColor(red = 0, green = 0, blue = 0, alpha = 1)
66 glClear(mask = GL_COLOR_BUFFER_BIT)
67 glUseProgram(program = 3)
68 glBindVertexArray(array = 1)
69 glDrawArrays(mode = GL_TRIANGLES, first = 0, count = 3)
70 glBindVertexArray(array = 0)
71 glUseProgram(program = 0)
72 CGLFlushDrawable(ctx = 0x1900ec00) = kCGLNoError
73 glClearColor(red = 0, green = 0, blue = 0, alpha = 1)
74 glClear(mask = GL_COLOR_BUFFER_BIT)
75 glUseProgram(program = 3)
76 glBindVertexArray(array = 1)
77 glDrawArrays(mode = GL_TRIANGLES, first = 0, count = 3)
78 glBindVertexArray(array = 0)
79 glUseProgram(program = 0)
80 CGLFlushDrawable(ctx = 0x1900ec00) = kCGLNoError
81 glClearColor(red = 0, green = 0, blue = 0, alpha = 1)
82 glClear(mask = GL_COLOR_BUFFER_BIT)
83 glUseProgram(program = 3)
84 glBindVertexArray(array = 1)
85 glDrawArrays(mode = GL_TRIANGLES, first = 0, count = 3)
86 glBindVertexArray(array = 0)
87 glUseProgram(program = 0)
88 CGLFlushDrawable(ctx = 0x1900ec00) = kCGLNoError
89 glClearColor(red = 0, green = 0, blue = 0, alpha = 1)
90 glClear(mask = GL_COLOR_BUFFER_BIT)
91 glUseProgram(program = 3)
92 glBindVertexArray(array = 1)
93 glDrawArrays(mode = GL_TRIANGLES, first = 0, count = 3)
94 glBindVertexArray(array = 0)
95 glUseProgram(program = 0)
96 CGLFlushDrawable(ctx = 0x1900ec00) = kCGLNoError
97 glClearColor(red = 0, green = 0, blue = 0, alpha = 1)
98 glClear(mask = GL_COLOR_BUFFER_BIT)
99 glUseProgram(program = 3)
100 glBindVertexArray(array = 1)
101 glDrawArrays(mode = GL_TRIANGLES, first = 0, count = 3)
102 glBindVertexArray(array = 0)
103 glUseProgram(program = 0)
104 CGLFlushDrawable(ctx = 0x1900ec00) = kCGLNoError
105 glClearColor(red = 0, green = 0, blue = 0, alpha = 1)
106 glClear(mask = GL_COLOR_BUFFER_BIT)
107 glUseProgram(program = 3)
108 glBindVertexArray(array = 1)
109 glDrawArrays(mode = GL_TRIANGLES, first = 0, count = 3)
110 glBindVertexArray(array = 0)
111 glUseProgram(program = 0)
112 CGLFlushDrawable(ctx = 0x1900ec00) = kCGLNoError
113 glClearColor(red = 0, green = 0, blue = 0, alpha = 1)
114 glClear(mask = GL_COLOR_BUFFER_BIT)
115 glUseProgram(program = 3)
116 glBindVertexArray(array = 1)
117 glDrawArrays(mode = GL_TRIANGLES, first = 0, count = 3)
118 glBindVertexArray(array = 0)
119 glUseProgram(program = 0)
120 CGLFlushDrawable(ctx = 0x1900ec00) = kCGLNoError
121 glClearColor(red = 0, green = 0, blue = 0, alpha = 1)
122 glClear(mask = GL_COLOR_BUFFER_BIT)
123 glUseProgram(program = 3)
124 glBindVertexArray(array = 1)
125 glDrawArrays(mode = GL_TRIANGLES, first = 0, count = 3)
126 glBindVertexArray(array = 0)
127 glUseProgram(program = 0)
128 CGLFlushDrawable(ctx = 0x1900ec00) = kCGLNoError
129 glClearColor(red = 0, green = 0, blue = 0, alpha = 1)
130 glClear(mask = GL_COLOR_BUFFER_BIT)
131 glUseProgram(program = 3)
132 glBindVertexArray(array = 1)
133 glDrawArrays(mode = GL_TRIANGLES, first = 0, count = 3)
134 glBindVertexArray(array = 0)
135 glUseProgram(program = 0)
136 CGLFlushDrawable(ctx = 0x1900ec00) = kCGLNoError
137 glClearColor(red = 0, green = 0, blue = 0, alpha = 1)
138 glClear(mask = GL_COLOR_BUFFER_BIT)
139 glUseProgram(program = 3)
140 glBindVertexArray(array = 1)
141 glDrawArrays(mode = GL_TRIANGLES, first = 0, count = 3)
142 glBindVertexArray(array = 0)
143 glUseProgram(program = 0)
144 CGLFlushDrawable(ctx = 0x1900ec00) = kCGLNoError
145 glClearColor(red = 0, green = 0, blue = 0, alpha = 1)
146 glClear(mask = GL_COLOR_BUFFER_BIT)
147 glUseProgram(program = 3)
148 glBindVertexArray(array = 1)
149 glDrawArrays(mode = GL_TRIANGLES, first = 0, count = 3)
150 glBindVertexArray(array = 0)
151 glUseProgram(program = 0)
152 CGLFlushDrawable(ctx = 0x1900ec00) = kCGLNoError
0 CGLSetOption(pname = kCGLGOUseErrorHandler, param = 0) = kCGLNoError
1 CGLChoosePixelFormat(attribs = {kCGLPFADoubleBuffer, kCGLPFAOpenGLProfile, 12800, kCGLPFAColorSize, 24, kCGLPFAAlphaSize, 8, 0}, pix = &0x7fa42b40eb90, npix = &2) = kCGLNoError
2 CGLSetOption(pname = kCGLGOUseErrorHandler, param = 0) = kCGLNoError
3 CGLCreateContext(pix = 0x7fa42b40eb90, share = NULL, ctx = &0x7fa42c80f400) = kCGLNoError
4 CGLSetParameter(ctx = 0x7fa42c80f400, pname = 1236, params = &725674064) = kCGLNoError
5 CGLSetSurface(ctx = 0x7fa42c80f400, cid = 0x211db, wid = 10453, sid = 1220653509) = kCGLNoError
6 CGLSetCurrentContext(ctx = 0x7fa42c80f400) = kCGLNoError
7 glViewport(x = 0, y = 0, width = 800, height = 600)
8 glScissor(x = 0, y = 0, width = 800, height = 600)
9 CGLDescribePixelFormat(pix = 0x7fa42b40eb90, pix_num = 0, attrib = kCGLPFAAccelerated, value = &1) = kCGLNoError
10 CGLDescribePixelFormat(pix = 0x7fa42b40eb90, pix_num = 0, attrib = kCGLPFAAlphaSize, value = &8) = kCGLNoError
11 CGLDescribePixelFormat(pix = 0x7fa42b40eb90, pix_num = 0, attrib = kCGLPFAColorSize, value = &32) = kCGLNoError
12 CGLDescribePixelFormat(pix = 0x7fa42b40eb90, pix_num = 0, attrib = kCGLPFADepthSize, value = &0) = kCGLNoError
13 CGLDescribePixelFormat(pix = 0x7fa42b40eb90, pix_num = 0, attrib = kCGLPFAStencilSize, value = &0) = kCGLNoError
14 CGLDescribePixelFormat(pix = 0x7fa42b40eb90, pix_num = 0, attrib = kCGLPFAAccumSize, value = &0) = kCGLNoError
15 CGLDescribePixelFormat(pix = 0x7fa42b40eb90, pix_num = 0, attrib = kCGLPFAAuxBuffers, value = &0) = kCGLNoError
16 CGLDescribePixelFormat(pix = 0x7fa42b40eb90, pix_num = 0, attrib = kCGLPFAStereo, value = &0) = kCGLNoError
17 CGLDescribePixelFormat(pix = 0x7fa42b40eb90, pix_num = 0, attrib = kCGLPFASamples, value = &0) = kCGLNoError
19 glGetIntegerv(pname = GL_CONTEXT_FLAGS, params = &1)
20 glGetIntegerv(pname = GL_CONTEXT_PROFILE_MASK, params = &1)
21 glClear(mask = GL_COLOR_BUFFER_BIT)
22 CGLFlushDrawable(ctx = 0x7fa42c80f400) = kCGLNoError
29 glCreateShader(type = GL_VERTEX_SHADER) = 1
30 glShaderSource(shader = 1, count = 1, string = &"#version 150
in vec3 vert;
void main() {
// does not alter the verticies at all
gl_Position = vec4(vert, 1);
}", length = NULL)
31 glCompileShader(shader = 1)
32 glGetShaderiv(shader = 1, pname = GL_COMPILE_STATUS, params = &1)
33 glCreateShader(type = GL_FRAGMENT_SHADER) = 2
34 glShaderSource(shader = 2, count = 1, string = &"#version 150
out vec4 finalColor;
void main() {
//set every drawn pixel to white
finalColor = vec4(1.0, 1.0, 1.0, 1.0);
}", length = NULL)
35 glCompileShader(shader = 2)
36 glGetShaderiv(shader = 2, pname = GL_COMPILE_STATUS, params = &1)
37 glCreateProgram() = 3
38 glAttachShader(program = 3, shader = 1)
39 glAttachShader(program = 3, shader = 2)
40 glBindAttribLocation(program = 3, index = 0, name = "vert")
41 glLinkProgram(program = 3)
42 glDetachShader(program = 3, shader = 1)
43 glDetachShader(program = 3, shader = 2)
44 glGetProgramiv(program = 3, pname = GL_LINK_STATUS, params = &1)
45 glDeleteShader(shader = 1)
46 glDeleteShader(shader = 2)
47 glGenVertexArrays(n = 1, arrays = &1)
48 glBindVertexArray(array = 1)
49 glGenBuffers(n = 1, buffer = &1)
50 glBindBuffer(target = GL_ARRAY_BUFFER, buffer = 1)
51 glBufferData(target = GL_ARRAY_BUFFER, size = 36, data = blob(36), usage = GL_STATIC_DRAW)
52 glGetAttribLocation(program = 3, name = "vert") = 0
53 glEnableVertexAttribArray(index = 0)
54 glGetAttribLocation(program = 3, name = "vert") = 0
55 glVertexAttribPointer(index = 0, size = 3, type = GL_FLOAT, normalized = GL_FALSE, stride = 0, pointer = NULL)
56 glBindBuffer(target = GL_ARRAY_BUFFER, buffer = 0)
57 glBindVertexArray(array = 0)
58 glClearColor(red = 0, green = 0, blue = 0, alpha = 1)
59 glClear(mask = GL_COLOR_BUFFER_BIT)
60 glUseProgram(program = 3)
61 glBindVertexArray(array = 1)
62 glDrawArrays(mode = GL_TRIANGLES, first = 0, count = 3)
63 glBindVertexArray(array = 0)
64 glUseProgram(program = 0)
65 CGLFlushDrawable(ctx = 0x7fa42c80f400) = kCGLNoError
66 glClearColor(red = 0, green = 0, blue = 0, alpha = 1)
67 glClear(mask = GL_COLOR_BUFFER_BIT)
68 glUseProgram(program = 3)
69 glBindVertexArray(array = 1)
70 glDrawArrays(mode = GL_TRIANGLES, first = 0, count = 3)
71 glBindVertexArray(array = 0)
72 glUseProgram(program = 0)
73 CGLFlushDrawable(ctx = 0x7fa42c80f400) = kCGLNoError
74 glClearColor(red = 0, green = 0, blue = 0, alpha = 1)
75 glClear(mask = GL_COLOR_BUFFER_BIT)
76 glUseProgram(program = 3)
77 glBindVertexArray(array = 1)
78 glDrawArrays(mode = GL_TRIANGLES, first = 0, count = 3)
79 glBindVertexArray(array = 0)
80 glUseProgram(program = 0)
81 CGLFlushDrawable(ctx = 0x7fa42c80f400) = kCGLNoError
82 glClearColor(red = 0, green = 0, blue = 0, alpha = 1)
83 glClear(mask = GL_COLOR_BUFFER_BIT)
84 glUseProgram(program = 3)
85 glBindVertexArray(array = 1)
86 glDrawArrays(mode = GL_TRIANGLES, first = 0, count = 3)
87 glBindVertexArray(array = 0)
88 glUseProgram(program = 0)
89 CGLFlushDrawable(ctx = 0x7fa42c80f400) = kCGLNoError
90 glClearColor(red = 0, green = 0, blue = 0, alpha = 1)
91 glClear(mask = GL_COLOR_BUFFER_BIT)
92 glUseProgram(program = 3)
93 glBindVertexArray(array = 1)
94 glDrawArrays(mode = GL_TRIANGLES, first = 0, count = 3)
95 glBindVertexArray(array = 0)
96 glUseProgram(program = 0)
97 CGLFlushDrawable(ctx = 0x7fa42c80f400) = kCGLNoError
98 glClearColor(red = 0, green = 0, blue = 0, alpha = 1)
99 glClear(mask = GL_COLOR_BUFFER_BIT)
100 glUseProgram(program = 3)
101 glBindVertexArray(array = 1)
102 glDrawArrays(mode = GL_TRIANGLES, first = 0, count = 3)
103 glBindVertexArray(array = 0)
104 glUseProgram(program = 0)
105 CGLFlushDrawable(ctx = 0x7fa42c80f400) = kCGLNoError
106 glClearColor(red = 0, green = 0, blue = 0, alpha = 1)
107 glClear(mask = GL_COLOR_BUFFER_BIT)
108 glUseProgram(program = 3)
109 glBindVertexArray(array = 1)
110 glDrawArrays(mode = GL_TRIANGLES, first = 0, count = 3)
111 glBindVertexArray(array = 0)
112 glUseProgram(program = 0)
113 CGLFlushDrawable(ctx = 0x7fa42c80f400) = kCGLNoError
114 glClearColor(red = 0, green = 0, blue = 0, alpha = 1)
115 glClear(mask = GL_COLOR_BUFFER_BIT)
116 glUseProgram(program = 3)
117 glBindVertexArray(array = 1)
118 glDrawArrays(mode = GL_TRIANGLES, first = 0, count = 3)
119 glBindVertexArray(array = 0)
120 glUseProgram(program = 0)
121 CGLFlushDrawable(ctx = 0x7fa42c80f400) = kCGLNoError
122 glClearColor(red = 0, green = 0, blue = 0, alpha = 1)
123 glClear(mask = GL_COLOR_BUFFER_BIT)
124 glUseProgram(program = 3)
125 glBindVertexArray(array = 1)
126 glDrawArrays(mode = GL_TRIANGLES, first = 0, count = 3)
127 glBindVertexArray(array = 0)
128 glUseProgram(program = 0)
129 CGLFlushDrawable(ctx = 0x7fa42c80f400) = kCGLNoError
130 glClearColor(red = 0, green = 0, blue = 0, alpha = 1)
131 glClear(mask = GL_COLOR_BUFFER_BIT)
132 glUseProgram(program = 3)
133 glBindVertexArray(array = 1)
134 glDrawArrays(mode = GL_TRIANGLES, first = 0, count = 3)
135 glBindVertexArray(array = 0)
136 glUseProgram(program = 0)
137 CGLFlushDrawable(ctx = 0x7fa42c80f400) = kCGLNoError
138 glClearColor(red = 0, green = 0, blue = 0, alpha = 1)
139 glClear(mask = GL_COLOR_BUFFER_BIT)
140 glUseProgram(program = 3)
141 glBindVertexArray(array = 1)
142 glDrawArrays(mode = GL_TRIANGLES, first = 0, count = 3)
143 glBindVertexArray(array = 0)
144 glUseProgram(program = 0)
145 CGLFlushDrawable(ctx = 0x7fa42c80f400) = kCGLNoError
146 glClearColor(red = 0, green = 0, blue = 0, alpha = 1)
147 glClear(mask = GL_COLOR_BUFFER_BIT)
148 glUseProgram(program = 3)
149 glBindVertexArray(array = 1)
150 glDrawArrays(mode = GL_TRIANGLES, first = 0, count = 3)
151 glBindVertexArray(array = 0)
152 glUseProgram(program = 0)
153 CGLFlushDrawable(ctx = 0x7fa42c80f400) = kCGLNoError
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment