JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GL13_nglMultiTexCoord3dv(JNIEnv *__env, jclass clazz, jint texture, jlong vAddress, jlong __functionAddress) { const GLdouble *v = (const GLdouble *)(intptr_t)vAddress; glMultiTexCoord3dvPROC glMultiTexCoord3dv = (glMultiTexCoord3dvPROC)(intptr_t)__functionAddress; UNUSED_PARAMS(__env, clazz) glMultiTexCoord3dv(texture, v); }
void TrisetObject::drawTriset(float pnear, float pfar, Vec step) { glEnable(GL_DEPTH_TEST); bool black = (m_color.x<0.1 && m_color.y<0.1 && m_color.z<0.1); bool has_normals = (m_normals.count() > 0); bool per_vertex_color = (m_vcolor.count() > 0 && black); if (m_pointMode) { glEnable(GL_POINT_SPRITE); glActiveTexture(GL_TEXTURE0); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, Global::spriteTexture()); glTexEnvf( GL_POINT_SPRITE, GL_COORD_REPLACE, GL_TRUE ); glHint(GL_POINT_SMOOTH_HINT, GL_NICEST); glEnable(GL_POINT_SMOOTH); glPointSize(m_pointSize); glBegin(GL_POINTS); for(int i=0; i<m_triangles.count()/3; i+=m_pointStep) { int v0 = m_triangles[3*i]; if ( m_texValues[v0].x >= pnear && m_texValues[v0].x <= pfar ) { if (has_normals) glNormal3dv(m_tnormals[v0]); if (per_vertex_color) glColor4f(m_drawcolor[v0].x, m_drawcolor[v0].y, m_drawcolor[v0].z, m_opacity); glVertex3dv(m_tvertices[v0]); } } glEnd(); glPointSize(1); glDisable(GL_POINT_SPRITE); glActiveTexture(GL_TEXTURE0); glDisable(GL_TEXTURE_2D); } else { glBegin(GL_TRIANGLES); for(int i=0; i<m_triangles.count()/3; i++) { int v0 = m_triangles[3*i]; int v1 = m_triangles[3*i+1]; int v2 = m_triangles[3*i+2]; if ( ! ((m_texValues[v0].x < pnear && m_texValues[v1].x < pnear && m_texValues[v2].x < pnear) || (m_texValues[v0].x > pfar && m_texValues[v1].x > pfar && m_texValues[v2].x > pfar)) ) { glMultiTexCoord2d(GL_TEXTURE0, m_texValues[v0].y, m_texValues[v0].z); if (has_normals) glNormal3dv(m_tnormals[v0]); if (per_vertex_color) glColor4f(m_drawcolor[v0].x, m_drawcolor[v0].y, m_drawcolor[v0].z, m_opacity); glMultiTexCoord3dv(GL_TEXTURE2, m_tvertices[v0]); glVertex3dv(m_tvertices[v0]+step); glMultiTexCoord2d(GL_TEXTURE0, m_texValues[v1].y, m_texValues[v1].z); if (has_normals) glNormal3dv(m_tnormals[v1]); if (per_vertex_color) glColor4f(m_drawcolor[v1].x, m_drawcolor[v1].y, m_drawcolor[v1].z, m_opacity); glMultiTexCoord3dv(GL_TEXTURE2, m_tvertices[v1]); glVertex3dv(m_tvertices[v1]+step); glMultiTexCoord2d(GL_TEXTURE0, m_texValues[v2].y, m_texValues[v2].z); if (has_normals) glNormal3dv(m_tnormals[v2]); if (per_vertex_color) glColor4f(m_drawcolor[v2].x, m_drawcolor[v2].y, m_drawcolor[v2].z, m_opacity); glMultiTexCoord3dv(GL_TEXTURE2, m_tvertices[v2]); glVertex3dv(m_tvertices[v2]+step); } } glEnd(); } glDisable(GL_DEPTH_TEST); }