示例#1
0
void prepare_shader(void)
{
	// build the shader program
	vert = shader_load(GL_VERTEX_SHADER, "data/render.vert");
	frag = shader_load(GL_FRAGMENT_SHADER, "data/render.frag");
	prog = glCreateProgram();
	glAttachShader(prog, vert);
	glAttachShader(prog, frag);
	glLinkProgram(prog);
	GLint param;
	glGetProgramiv(prog, GL_LINK_STATUS, &param);
	printf("*** Shader linking %s.\n",
		param == GL_FALSE ? "went as expected" : "worked");
	printProgramInfoLog(prog);

	// prepare uniforms etc for the shader	
	s_angle = glGetUniformLocation(prog, "angle");	
	s_pos = glGetUniformLocation(prog, "position");	
	s_pixelarc = glGetUniformLocation(prog, "pixel_arc");
	s_fovdepth = glGetUniformLocation(prog, "fovdepth");
	s_bPool = glGetUniformLocation(prog, "bPool");	
	s_nPool = glGetUniformLocation(prog, "nPool");	
//	s_now = glGetUniformLocation(prog, "now");	
//	glUniform1i(s_now, now);
	glUniformui64NV(s_nPool, nodepool_devptr);
//	glUniform1i(s_bPool, 0);

//	glMakeBufferNonResidentNV(GL_ARRAY_BUFFER_ARB);
}
示例#2
0
void voxel_draw(void)
{
	if(keys[KEY_R])
	{
		keys[KEY_R] = 0;
		printf("Reloading shader.\n");
		glDeleteShader(vert);
		glDeleteShader(frag);
		glDeleteProgram(prog);
		prepare_shader();
	}


//	killme=1;

//	float3 pos, normal;

//	pos.x = 0.5 + sin(px)*pz;
//	pos.y = 0.5;
//	pos.z = 0.5 + cos(px)*pz;

//	pos.x = px; pos.y = py; pos.z = pz;

//	glUseProgram(0);
	glActiveTexture(GL_TEXTURE0);
	glBindTexture(GL_TEXTURE_3D, brick_tex);
	glBindBuffer(GL_ARRAY_BUFFER, node_pool);
	glUseProgram(prog);
//	glUniform1f(s_fovdepth, tan(radians(fov)*0.5)*0.5);
//	glUniform1f(s_width, sin(radians(fov)/(float)vid_width));
	glUniform3f(s_angle, angle.x, angle.y, angle.z);
	glUniform3f(s_pos, pos.x, pos.y, pos.z);
	glUniformui64NV(s_nPool, nodepool_devptr);

//	glTranslatef(0, ((float)vid_height/(float)vid_width)*0.5-0.5 , 0);

	glBegin(GL_QUADS);
	glNormal3f(0,0,-1);
//	glColor3f(0,0,1);
	glTexCoord3f(0,0,0);
	glVertex3f(0,0,0);
//	glColor3f(1,0,1);
	glTexCoord3f(1,0,0);
	glVertex3f(1,0,0);
//	glColor3f(1,1,1);
	glTexCoord3f(1,1,0);
	glVertex3f(1,1,0);
//	glColor3f(0,1,1);
	glTexCoord3f(0,1,0);
	glVertex3f(0,1,0);
	glEnd();
	glUseProgram(0);
	now ++;
	// everyone in /r/opengl is crying at this point.
}
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_NVShaderBufferLoad_glUniformui64NV(JNIEnv *__env, jclass clazz, jint location, jlong value) {
    glUniformui64NVPROC glUniformui64NV = (glUniformui64NVPROC)tlsGetFunction(2108);
    UNUSED_PARAM(clazz)
    glUniformui64NV(location, value);
}