… | |
… | |
239 | |
239 | |
240 | program_object::program_object () |
240 | program_object::program_object () |
241 | { |
241 | { |
242 | id = glCreateProgramObjectARB (); |
242 | id = glCreateProgramObjectARB (); |
243 | assert (id); |
243 | assert (id); |
244 | } |
|
|
245 | |
244 | |
246 | program_object::~program_object () |
|
|
247 | { |
|
|
248 | glDeleteProgramsARB (1, &id); |
|
|
249 | } |
|
|
250 | |
|
|
251 | void program_object::link () |
|
|
252 | { |
|
|
253 | glAttachObjectARB (id, vsh->id); |
245 | glAttachObjectARB (id, vsh->id); |
254 | glAttachObjectARB (id, fsh->id); |
246 | glAttachObjectARB (id, fsh->id); |
|
|
247 | } |
|
|
248 | |
|
|
249 | program_object::~program_object () |
|
|
250 | { |
|
|
251 | glDeleteProgramsARB (1, &id); |
|
|
252 | } |
|
|
253 | |
|
|
254 | void program_object::link () |
|
|
255 | { |
255 | glLinkProgramARB (id); |
256 | glLinkProgramARB (id); |
256 | |
257 | |
257 | GLint linked; |
258 | GLint linked; |
258 | glGetObjectParameterivARB (id, GL_OBJECT_LINK_STATUS_ARB, &linked); |
259 | glGetObjectParameterivARB (id, GL_OBJECT_LINK_STATUS_ARB, &linked); |
259 | |
260 | |
… | |
… | |
356 | |
357 | |
357 | lightpos = vec4 (0, 10, 0, 1); |
358 | lightpos = vec4 (0, 10, 0, 1); |
358 | wpos = xyz (gl.model_view_matrix * vin.vertex); |
359 | wpos = xyz (gl.model_view_matrix * vin.vertex); |
359 | vout.position = gl.model_view_matrix_inverse_transpose * vin.vertex; |
360 | vout.position = gl.model_view_matrix_inverse_transpose * vin.vertex; |
360 | vout.tex_coord[0] = vin.tex_coord[0]; |
361 | vout.tex_coord[0] = vin.tex_coord[0]; |
361 | vout.tex_coord[1] = normalize (lightpos - wpos); |
362 | vout.tex_coord[1] = normalize (xyz (lightpos) - wpos); |
362 | vout.tex_coord[2] = normalize (wpos); |
363 | vout.tex_coord[2] = normalize (xyzx (wpos)); |
363 | //vout.tex_coord[3] = normalize (xyz (gl.model_view_matrix_inverse_transpose) * vin.normal); |
364 | //vout.tex_coord[3] = normalize (xyz (gl.model_view_matrix_inverse_transpose) * vin.normal); |
364 | //vout.tex_coord[4] = normalize (xyz (gl.projection_matrix_inverse_transpose) - wpos); |
365 | //vout.tex_coord[4] = normalize (xyz (gl.projection_matrix_inverse_transpose) - wpos); |
365 | |
366 | |
366 | vsh->end (); |
367 | vsh->end (); |
367 | vsh->compile (); |
368 | vsh->compile (); |