/[gzz]/gzz/gfx/jni/GzzGL-jni.cxx
ViewVC logotype

Diff of /gzz/gfx/jni/GzzGL-jni.cxx

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.52 by tjl, Sat Oct 19 14:26:36 2002 UTC revision 1.53 by jvk, Mon Oct 21 06:56:08 2002 UTC
# Line 541  JNIEXPORT jint JNICALL Java_gzz_gfx_gl_G Line 541  JNIEXPORT jint JNICALL Java_gzz_gfx_gl_G
541    (JNIEnv *env, jclass, jint id, jint w, jint h, jint d, jint comp,    (JNIEnv *env, jclass, jint id, jint w, jint h, jint d, jint comp,
542          jstring internalFormat,          jstring internalFormat,
543          jstring format,          jstring format,
544              jstring name, jobjectArray params) {              jstring name, jobjectArray params, jboolean shade_all_levels) {
545        setWindow();        setWindow();
546        DBG(dbg)<<"Shade into "<<id<<"\n";        DBG(dbg)<<"Shade into "<<id<<"\n";
547    
# Line 563  JNIEXPORT jint JNICALL Java_gzz_gfx_gl_G Line 563  JNIEXPORT jint JNICALL Java_gzz_gfx_gl_G
563    
564        float *value = new float[w * h * (d==0?1:d) * comp];        float *value = new float[w * h * (d==0?1:d) * comp];
565    
566        s->render(&p, w, h, (d==0?1:d), comp, value);        GLenum target = (d == 0) ? GL_TEXTURE_2D : GL_TEXTURE_3D;
567    
568        if(d == 0) {        glBindTexture(target, id);
           glBindTexture(GL_TEXTURE_2D, id);  
   
           glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP_SGIS, GL_TRUE);  
           glTexImage2D(GL_TEXTURE_2D, 0,  
                   tokenFromJstring(env, internalFormat),  
                   w, h, 0,  
                   tokenFromJstring(env, format),  
                   GL_FLOAT,  
                   value);  
   
   
           glBindTexture(GL_TEXTURE_2D, 0);  
       } else {  
           glBindTexture(GL_TEXTURE_3D, id);  
           GLERR  
   
           glTexParameteri(GL_TEXTURE_3D, GL_GENERATE_MIPMAP_SGIS, GL_TRUE);  
           GLERR  
   
           glTexImage3D(GL_TEXTURE_3D, 0,  
                   tokenFromJstring(env, internalFormat),  
                   w, h, d, 0,  
                   tokenFromJstring(env, format),  
                   GL_FLOAT,  
                   value);  
   
           GLERR  
   
   
           glBindTexture(GL_TEXTURE_3D, 0);  
           GLERR  
569    
570          if (!shade_all_levels) {
571              glTexParameteri(target, GL_GENERATE_MIPMAP_SGIS, GL_TRUE);
572              GLERR;
573          }
574            
575          int level;
576          for (level = 0; ; level++) {
577              s->render(&p, w, h, (d==0?1:d), comp, value);
578    
579              if (d == 0)
580                  glTexImage2D(GL_TEXTURE_2D, level,
581                               tokenFromJstring(env, internalFormat),
582                               w, h, 0,
583                               tokenFromJstring(env, format),
584                               GL_FLOAT,
585                               value);
586              else
587                  glTexImage3D(GL_TEXTURE_3D, level,
588                               tokenFromJstring(env, internalFormat),
589                               w, h, d, 0,
590                               tokenFromJstring(env, format),
591                               GL_FLOAT,
592                               value);
593    
594              GLERR;
595                  
596              if (! (shade_all_levels && (w > 1 || h > 1 || d > 1))) break;
597              
598              w = (w + 1) >> 1;
599              h = (h + 1) >> 1;
600              d = (d + 1) >> 1;
601          }
602          
603          if (shade_all_levels) {
604              glTexParameterf(target, GL_TEXTURE_BASE_LEVEL, 0);
605              glTexParameterf(target, GL_TEXTURE_MAX_LEVEL, level);
606        }        }
607    
608          glBindTexture(target, 0);
609          GLERR;
610    
611        delete[] value;        delete[] value;
612        delete s;        delete s;

Legend:
Removed from v.1.52  
changed lines
  Added in v.1.53

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26