Opengl es 我希望通过从图像加载纹理并在场景中使用纹理来增强代码
我是法国人,在开放和网络游戏中是新手……没有人是完美的: 我试着增强Evan Wallace的代码来制作一个小游戏。 但我尝试将纹理从图像加载到纹理对象,但没有成功。。。 一个主意 多谢各位 代码如下: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
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数据指针的原因。当然,我不知道如何使用帧缓冲区。