在android中使用opengl缩放和滚动图像纹理
我想在doubleTap中缩放图像,使其平滑滚动,请帮助我,我的绘制方法如下:在android中使用opengl缩放和滚动图像纹理,android,scroll,textures,zooming,Android,Scroll,Textures,Zooming,我想在doubleTap中缩放图像,使其平滑滚动,请帮助我,我的绘制方法如下: public void draw(GL10 gl) { // bind the previously generated texture //zooming in image if(Globalconfig.flag==1 && Globalconfig.flag2==true){ currentVertex=0; Globalconf
public void draw(GL10 gl) {
// bind the previously generated texture
//zooming in image
if(Globalconfig.flag==1 && Globalconfig.flag2==true){
currentVertex=0;
Globalconfig.b_height=texture.length;
//Log.d("length",""+Globalconfig.b_height);
gl.glViewport(0, 0, 444, 555);
gl.glOrthof(0.0f, 444, 0.0f,555, -0.1f, 0.1f);
for (int y = 0; y < 10+ 1; y++) {
for (int x = 0; x <10 + 1; x++) {
//vertices[currentVertex]=vertices[currentVertex]*1.5f;
//vertices[currentVertex+1]=vertices[currentVertex+1]*1.5f;
texture[currentVertex]/=1.5f;
texture[currentVertex+1]/=1.5f;
currentVertex +=2;
}
}
Globalconfig.flag2=false;
Log.d("instextureBufferide for", "nhjfghfx" );
//vertexBuffer.put(vertices);
//vertexBuffer.position(0);
textureBuffer.put(texture);
textureBuffer.position(0);
}
//zooming out image
//gl.glTranslatef(0,0 , 3);
if(Globalconfig.flag==2 && Globalconfig.flag2==true){
currentVertex=0;
for (int y = 0; y <10 + 1; y++) {
for (int x = 0; x <10 + 1; x++) {
//vertices[currentVertex]=vertices[currentVertex]/3.5f;
//vertices[currentVertex+1]=vertices[currentVertex+1]/3.5f;
texture[currentVertex]*=1.5f;
texture[currentVertex+1]*=1.5f;
currentVertex +=2;
}
}
transtaleT=false;
Globalconfig.flag2=false;
Log.d("inside for2", "nhjfghfx" );
//vertexBuffer.put(vertices);
//vertexBuffer.position(0);
textureBuffer.put(texture);
textureBuffer.position(0);
}
if(Globalconfig.transFlag==true && Globalconfig.flag==1 ){
currentVertex=0;
for (int y = 0; y < 10+ 1; y++) {
for (int x = 0; x <10 + 1; x++) {
//vertices[currentVertex]=vertices[currentVertex]*3.5f;
//vertices[currentVertex+1]=vertices[currentVertex+1]*3.5f;
texture[currentVertex]+=Globalconfig.x/1000 ;
texture[currentVertex+1]+=Globalconfig.y/1000;
currentVertex +=2;
Globalconfig.x1=(int)Globalconfig.x;
Globalconfig.y1=(int)Globalconfig.y;
}
}
vertexBuffer.put(vertices);
vertexBuffer.position(0);
Log.d("trans", "kjgvgv");
Globalconfig.transFlag=false;
Log.d("trans1", "kjgvgv");
}
//gl.glViewport(50, 50, 200, 200);
gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]);
// Point to our buffers
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
// Set the face rotation
gl.glFrontFace(GL10.GL_CW);
// Enable face culling.
gl.glEnable(GL10.GL_CULL_FACE);
// What faces to remove with the face culling.
gl.glCullFace(GL10.GL_CONSTANT_ATTENUATION);
// Point to our vertex buffer
gl.glVertexPointer(2, GL10.GL_FLOAT, 0, vertexBuffer);
gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, textureBuffer);
gl.glTexParameterf(GL10.GL_TEXTURE_2D,
GL10.GL_TEXTURE_WRAP_T,
GL10.GL_REPEAT );
// Draw the vertices as triangle strip
//gl.glTranslatef(0, 0, -4);
//gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, vertices.length / 3);
gl.glDrawElements(GL10.GL_TRIANGLES, numOfIndices,
GL10.GL_UNSIGNED_SHORT, indicesBuffer);
//Disable the client state before leaving
gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
gl.glDisableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
}
公共作废提取(GL10 gl){
//绑定先前生成的纹理
//放大图像
if(Globalconfig.flag==1&&Globalconfig.flag2==true){
currentVertex=0;
Globalconfig.b_高度=纹理.length;
//对数d(“长度”和“+”全局配置b_高度);
gl.glViewport(0,0444555);
格洛托夫总纲(0.0f、444、0.0f、555、-0.1f、0.1f);
对于(int y=0;y<10+1;y++){
对于(int x=0;x