@@ -4,6 +4,7 @@ OpenGL::Modern::Helpers;
4
4
use strict;
5
5
use Exporter ' import' ;
6
6
use Carp qw( croak) ;
7
+ use Config;
7
8
8
9
use OpenGL::Modern qw(
9
10
GL_NO_ERROR
@@ -158,6 +159,7 @@ $VERSION = '0.01_02';
158
159
GL_TABLE_TOO_LARGE() => ' The specified table exceeds the implementation\' s maximum supported table size.' ,
159
160
);
160
161
162
+ our $PACK_TYPE = $Config {ptrsize } == 4 ? ' L' : ' Q' ;
161
163
162
164
sub pack_GLuint {
163
165
my @gluints = @_ ;
@@ -205,28 +207,21 @@ sub xs_buffer {
205
207
$_ [0];
206
208
}
207
209
208
- sub glGetShaderInfoLog_p {
209
- my $shader = $_ [0] ;
210
+ sub get_info_log_p {
211
+ my ( $call , $id ) = @_ ;
210
212
my $bufsize = 1024*64;
211
213
my $buffer = " \0 " x $bufsize ;
212
214
my $len = " \0 " x 4 ;
213
215
# void glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei* length, GLchar* infoLog);
214
- glGetShaderInfoLog_c( $shader , $bufsize , unpack (' Q' ,pack (' p' ,$len )), $buffer );
215
- $len = unpack ' I' , $len ;
216
- return substr $buffer , 0, $len ;
217
- }
218
-
219
- sub glGetProgramInfoLog_p {
220
- my $program = $_ [0];
221
- my $bufsize = 1024*64;
222
- my $buffer = " \0 " x $bufsize ;
223
- my $len = " \0 " x 4 ;
224
216
# void glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei* length, GLchar* infoLog);
225
- glGetProgramInfoLog_c ( $program , $bufsize , unpack (' Q ' , pack (' p' ,$len ) ), $buffer );
217
+ $call -> ( $id , $bufsize , unpack ( $PACK_TYPE , pack ( ' p' , $len ) ), $buffer );
226
218
$len = unpack ' I' , $len ;
227
219
return substr $buffer , 0, $len ;
228
220
}
229
221
222
+ sub glGetShaderInfoLog_p { get_info_log_p \&glGetShaderInfoLog, @_ }
223
+ sub glGetProgramInfoLog_p { get_info_log_p \&glGetProgramInfoLog, @_ }
224
+
230
225
sub glGetVersion_p {
231
226
# const GLubyte * GLAPIENTRY glGetString (GLenum name);
232
227
my $glVersion = glGetString(GL_VERSION);
0 commit comments