私はマルチプラットフォームのゲームエンジン(将来的にはオープンソース)を作成していて、それに基づいてゲームを作成していました。サムスンギャラクシーS2(I9100B)でテストすると、完全に動作しますが、他の電話(サムスンギャラクシーS)で実行しようとすると、問題が発生します。
GalaxyS2で実行しているときのスクリーンショットは次のとおりです。
そして、これが私がGalaxySで実行するときです。
シーン内の三角形の数も減らすことができましたが、画面に50個の三角形が表示されていても、同じ問題が発生しました。照明を無効にすると問題は軽減されますが、解消されるわけではありません。それは私の携帯電話のメモリの問題だと思ったので、別のGalaxy Sを試してみましたが、同じ問題が発生します。
誰かが私がどこから探し始めることができるか知っていますか?自動GCは頻繁ではありません(5秒あたり約2回)。
Samsung Galaxy S2:Androidバージョン2.3.4カーネル:2.6.35.7-I9100UHKI2-CL553601 se.infra@SEI-07#2
Samsung Galaxy S:Androidバージョン2.3.3 Kernek:2.6.35.7-I9000BVJJW4-CL240848 pescio @ bldhp-4#28
フラグメントシェーダーコード:高精度ミディアムフロート;
uniform sampler2D uSampler;
uniform float uIsPoint;
uniform float uEnableLight;
uniform float uDisableTexture;
varying vec4 vColor;
varying vec2 vTextureCoord;
varying vec4 vPosition;
uniform vec3 uPointLightingColor;
varying vec3 vColorWeight;
void main(){
if(uIsPoint >= 2.0) {
gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);
}else{
vec4 calcColor;
if(uEnableLight >= 2.0)
calcColor = vec4(vColor.rgb * vColorWeight, vColor.a);
else
calcColor = vColor;
vec4 texColor = vec4(1.0,1.0,1.0,1.0);
if(uDisableTexture < 2.0)
texColor = texture2D(uSampler, vTextureCoord);
gl_FragColor = vec4(texColor.rgb * calcColor.rgb, texColor.a*calcColor.a);
}
}
頂点シェーダーコード:
//Atributos
uniform mat4 uMVMatrix; //Model/View Matrix
uniform mat4 uPMatrix; //Model/View/Projection Matrix
uniform mat3 uNMatrix; //Normal Matrix
attribute vec3 aVertexPosition;
attribute vec4 aVertexColor;
attribute vec2 aTextureCoord;
attribute vec3 aNormal;
varying vec4 vColor;
varying vec2 vTextureCoord;
varying vec3 vNormal;
varying vec4 vPosition;
//Lighting
uniform vec3 uAmbientColor;
uniform vec3 uLightDir;
uniform vec3 uLightColor;
uniform vec3 uSpecLightColor;
uniform float uShine;
varying vec3 vColorWeight;
void main(){
//Lighting
vec3 normal = normalize(uNMatrix * aNormal);
vec3 lightNorm = normalize(uLightDir);
float lightWeight = max(dot(aNormal,lightNorm),0.0);
vec3 halfVec = normalize(uLightDir - gl_Position.xyz);
float specWeight = pow(max(dot(normal,halfVec),0.0),uShine);
vColorWeight = uAmbientColor + (lightWeight * uLightColor) + (uSpecLightColor*specWeight);
//Others
vNormal = uNMatrix * aNormal;
vPosition = uMVMatrix * vec4(aVertexPosition,1.0);
gl_Position = uPMatrix * vPosition;
vColor = aVertexColor;
gl_PointSize = 2.0;
vTextureCoord = aTextureCoord;
}