Opengl es Can';t渲染WebGL平面的纹理

Opengl es Can';t渲染WebGL平面的纹理,opengl-es,textures,rendering,webgl,bounds,Opengl Es,Textures,Rendering,Webgl,Bounds,我已经学习了如何在WebGL中添加一些对象,旋转它们 但是我有一个纹理处理的问题 我的WebGL应用程序的源代码: 三维平面图 html,正文,#画布主{ 宽度:100%; 身高:100%; 最小高度:500px; 最小宽度:900px; 边际:0px; } 精密中泵浮子; 可变向量2 vTextureCoord; 均匀取样器; 真空总管(真空){ gl_FragColor=texture2D(uSampler,vec2(vtexturecord.s,vtexturecord.t)); } 属

我已经学习了如何在WebGL中添加一些对象,旋转它们

但是我有一个纹理处理的问题

我的WebGL应用程序的源代码:

三维平面图
html,正文,#画布主{
宽度:100%;
身高:100%;
最小高度:500px;
最小宽度:900px;
边际:0px;
}
精密中泵浮子;
可变向量2 vTextureCoord;
均匀取样器;
真空总管(真空){
gl_FragColor=texture2D(uSampler,vec2(vtexturecord.s,vtexturecord.t));
}
属性向量3;
属性向量2编码;
可变向量2 vTextureCoord;
均匀mat4-uMVMatrix;
一致mat4上矩阵;
真空总管(真空){
gl_位置=上矩阵*UMV矩阵*vec4(1.0);
vTextureCoord=ATextureCord;
}
var-gl;
函数initGL(画布){
试一试{
gl=canvas.getContext(“实验性webgl”);
gl.viewportWidth=canvas.width;
gl.viewportHeight=canvas.height;
}捕获(e){
}
如果(!gl){
警报(“无法初始化WebGL,抱歉:-(”);
}
}
函数getShader(gl,id){
var shaderScript=document.getElementById(id);
如果(!shaderScript){
返回null;
}
var str=“”;
var k=shaderScript.firstChild;
while(k){
if(k.nodeType==3){
str+=k.textContent;
}
k=k.nextSibling;
}
var着色器;
if(shaderScript.type==“x-shader/x-fragment”){
着色器=gl.createShader(gl.FRAGMENT\u着色器);
}else if(shaderScript.type==“x-shader/x-vertex”){
着色器=gl.createShader(gl.VERTEX\u着色器);
}否则{
返回null;
}
gl.shaderSource(着色器,str);
gl.compileShader(着色器);
if(!gl.getShaderParameter(着色器,gl.COMPILE_状态)){
警报(gl.getShaderInfoLog(着色器));
返回null;
}
返回着色器;
}
var着色器程序;
函数initShaders(){
var fragmentShader=getShader(gl,“着色器fs”);
var vertexShader=getShader(gl,“着色器vs”);
shaderProgram=gl.createProgram();
gl.attachShader(着色器程序、顶点着色器);
gl.attachShader(着色器程序、碎片着色器);
gl.linkProgram(着色器程序);
if(!gl.getProgramParameter(着色器程序,gl.LINK_状态)){
警报(“无法初始化着色器”);
}
gl.useProgram(shaderProgram);
shaderProgram.vertexPositionAttribute=gl.GetAttributeLocation(shaderProgram,“aVertexPosition”);
gl.enableVertexAttributeArray(shaderProgramm.vertexPositionAttribute);
shaderProgram.textureCoordAttribute=gl.getAttributeLocation(shaderProgram,“atexturecord”);
gl.enableVertexAttributeArray(shaderProgramm.TextureOrdAttribute);
shaderProgram.pMatrixUniform=gl.getUniformLocation(shaderProgram,“uPMatrix”);
shaderProgram.mvMatrixUniform=gl.getUniformLocation(shaderProgram,“uMVMatrix”);
shaderProgram.samplerUniform=gl.getUniformLocation(shaderProgram,“uSampler”);
}
函数handleLoadedTexture(纹理){
gl.bindTexture(gl.TEXTURE_2D,纹理);
gl.pixelStorei(gl.UNPACK\u FLIP\u Y\u WEBGL,真);
gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,gl.RGBA,gl.UNSIGNED_字节,TEXTURE.image);
gl.texParameteri(gl.TEXTURE\u 2D,gl.TEXTURE\u MAG\u过滤器,gl.NEAREST);
gl.texParameteri(gl.TEXTURE\u 2D,gl.TEXTURE\u MIN\u过滤器,gl.NEAREST);
gl.bindTexture(gl.TEXTURE_2D,空);
}
Myvar纹理;
函数initTexture(){
myTexture=gl.createTexture();
myTexture.image=新图像();
myTexture.image.onload=函数(){
手工加载纹理(myTexture)
}
myTexture.image.src=“moscow.jpg”;
}
var mvMatrix=mat4.create();
var pMatrix=mat4.create();
var mvMatrixStack=[];
函数mvPushMatrix(){
var copy=mat4.create();
mat4.集合(mvMatrix,副本);
mvMatrixStack.push(复制);
}
函数mvPopMatrix(){
if(mvMatrixStack.length==0){
抛出“无效的popMatrix!”;
}
mvMatrix=mvMatrixStack.pop();
}
函数setMatrixUniforms(){
gl.uniformMatrix4fv(shaderProgram.pMatrixUniform,false,pMatrix);
gl.uniformMatrix4fv(shaderProgram.mvMatrixUniform,false,mvMatrix);
}
函数degToRad(度){
返回度*Math.PI/180;
}
var平方暴露缓冲区;
var SquareVertextureCoordBuffer;
var squareVertexIndexBuffer;
函数initBuffers(){
squareVertexPositionBuffer=gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER,squareVertexPositionBuffer);
顶点=[
1.0,  1.0,  0.0,
-1.0,  1.0,  0.0,
1.0, -1.0,  0.0,
-1.0, -1.0,  0.0
];
gl.bufferData(gl.ARRAY\u BUFFER、新Float32Array(顶点)、gl.STATIC\u DRAW);
squareVertexPositionBuffer.itemSize=3;
squareVertexPositionBuffer.numItems=4;
SquareVertextureCoordBuffer=gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER,squareVertextureCoordbuffer);
var textureCoords=[
0.0, 0.0,
1.0, 0.0,
1.0, 1.0,
0.0, 1.0,
];
德国劳埃德船级社