Opengl es 我希望通过从图像加载纹理并在场景中使用纹理来增强代码

Opengl es 我希望通过从图像加载纹理并在场景中使用纹理来增强代码,opengl-es,webgl,texture-mapping,Opengl Es,Webgl,Texture Mapping,我是法国人,在开放和网络游戏中是新手……没有人是完美的: 我试着增强Evan Wallace的代码来制作一个小游戏。 但我尝试将纹理从图像加载到纹理对象,但没有成功。。。 一个主意 多谢各位 代码如下: function loadImage(url, callback) { var image = new Image(); image.src = url; image.onload = callback; return image; } function loadIma

我是法国人,在开放和网络游戏中是新手……没有人是完美的: 我试着增强Evan Wallace的代码来制作一个小游戏。 但我尝试将纹理从图像加载到纹理对象,但没有成功。。。 一个主意

多谢各位

代码如下:

function loadImage(url, callback) {
  var image = new Image();
  image.src = url;
  image.onload = callback;
  return image;
  }

  function loadImages(urls, callback) {
  var images = [];
  var imagesToLoad = urls.length;

  // Called each time an image finished
  // loading.
  var onImageLoad = function() {
  --imagesToLoad;
  // If all the images are loaded call the callback.
  if (imagesToLoad == 0) {
  callback(images);
  }
  };

  for (var ii = 0; ii < imagesToLoad; ++ii) {
  var image = loadImage(urls[ii], onImageLoad);
  images.push(image);
  }
  }

  if (gl) {
  loadImages([
  "178.jpg",
  "football.png",
  ], PathTracer);
  }

  function PathTracer(images) {

 var vertices = [
-1, -1,
-1, +1,
+1, -1,
+1, +1
];

// create vertex buffer
this.vertexBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer);
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW);

// create framebuffer
this.framebuffer = gl.createFramebuffer();

 // create textures
 var type = gl.getExtension('OES_texture_float') ? gl.FLOAT :      gl.UNSIGNED_BYTE;
 this.textures = [];
 for(var i = 0; i < 3; i++) {
  this.textures.push(gl.createTexture());
  gl.bindTexture(gl.TEXTURE_2D, this.textures[i]);
  gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
  gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
  gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGB, 512, 512, 0, gl.RGB, type, null);
  if (i == 2){
  //gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE,   images); nothing append
 //gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 1, 1, 0, gl.RGBA,   gl.UNSIGNED_BYTE,new Uint8Array([0, 255, 255, 0])); with that screen blinking
 }
}
 gl.bindTexture(gl.TEXTURE_2D, null);

  // create render shader
  this.renderProgram = compileShader(renderVertexSource,     renderFragmentSource);
 this.renderVertexAttribute = gl.getAttribLocation(this.renderProgram,    'vertex');
 gl.enableVertexAttribArray(this.renderVertexAttribute);

 // objects and shader will be filled in when setObjects() is called
 this.objects = [];
 this.sampleCount = 0;
 this.tracerProgram = null;
 }

您永远不会将图像数据上载到OpenGL。在texImage2D调用中,您可以将null作为数据指针传递。您能帮忙吗,我该怎么做?谢谢您的建议,但代码处理帧缓冲区,这就是texImage2D null数据指针的原因。当然,我不知道如何使用帧缓冲区。