Bir Ruby on Rails çerçevesi olan ve sayfalarda WebGL kullanarak 3D grafikler oluşturmak isteyen Nitrous.IO kullanarak bir web uygulamasında çalışıyorum. Resmin görünmediği bir problemle karşılaştım ve boş bir doku olduğuna inanıyorum. Tuvalde (görünecek) bir eğirme küpü olmalı, ancak doku olması gereken .png dosyası görünmeyecektir. Resim/varlıklar/resimler klasöründedir ve "nehe.png" olarak etiketlenmiştir.Doku eşlemesi için görüntüyü içe aktarmaya çalışırken boş tuval
function handleLoadedTexture(texture) {
gl.bindTexture(gl.TEXTURE_2D, texture);
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, texture.image);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
gl.bindTexture(gl.TEXTURE_2D, null);
}
var neheTexture;
function initTexture() {
neheTexture = gl.createTexture();
neheTexture.image = new Image();
neheTexture.image.onload = function() {
handleLoadedTexture(neheTexture)
}
neheTexture.image.src = "nehe.png";
}
dayana: o zaman burada
<script id="shader-fs" type="x-shader/x-fragment">
precision mediump float;
varying vec2 vTextureCoord;
uniform sampler2D uSampler;
void main(void) {
gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.s, vTextureCoord.t));
}
<script id="shader-vs" type="x-shader/x-vertex">
attribute vec3 aVertexPosition;
attribute vec2 aTextureCoord;
uniform mat4 uMVMatrix;
uniform mat4 uPMatrix;
varying vec2 vTextureCoord;
void main(void) {
gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0);
vTextureCoord = aTextureCoord;
}
Ve tekstüre içe olmalıdır kod edilir: İşte kullanıyorum iki gölgelendiriciler vardır (% = image_tag%> 'i kullanmanın yanı sıra bu sayfayı kullandığımda raydaki resmi yüklemenin başka bir yolunu düşünün. yüklenmez ve bir hata üretilir. Yardım edebilecek biri varsa, bu harika olur. Bir doku olarak bir .jpeg dosyası kullanarak bitirmek istiyorum, ancak .png iyi bir başlangıç.
Teşekkürler!
Doku hangi boyutta? "gl.TEXTURE_WRAP_S" ve "gl.TEXTURE_WRAP_T" öğelerini "gl.CLAMP_TO_EDGE" olarak ayarlamıyorsunuz. Böylece, dokumanız her iki boyutta da bir güç 2 değilse, oluşturulmaz. VE, JavaScript konsolunda size söyleyen bir hata görmüş olmalısınız. – gman