Czy ktoś wie, jak włączyć mieszanie w OpenGL (Android) w HTC Desire. Próbuję narysować kolorowe trójkąty i używając wartości alfa bufora kolorów, aby połączyć je z tłem (lub innym trójkątem).Dlaczego funkcja mieszania OpenGL nie działa w telefonie HTC Desire?
Działa zarówno na emulatorze (2.1), jak i na htc hero 2.1, ale nie na moim pragnieniu z 2.2. Czy istnieje jakaś różnica w sprzęcie między bohaterem a pragnieniem, które to powoduje?
Głównym rzeczy z kodu jest (nie w kolejności):
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
gl.glEnable(GL10.GL_BLEND);
gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
private final static float[] colors = {
1f, 0f, 0f, 0.5f, // point 0 red
1f, 0f, 0f, 0.5f, // point 1 red
1f, 0f, 0f, 0.5f, // point 2 red
1f, 0f, 0f, 0.5f, // point 3 red
1f, 0f, 0f, 0.5f, // point 4 red
1f, 0f, 0f, 0.5f, // point 5 red
1f, 0f, 0f, 0.5f, // point 6 red
1f, 0f, 0f, 0.5f, // point 7 red
};
PS. Mogę dostarczyć więcej kodu, jeśli ktoś tego potrzebuje ...
Przypuszczam, że Desire nie realizuje funkcji. W przeciwieństwie do Direct3D, który powraca do renderowania oprogramowania, z OpenGL, jeśli funkcja nie jest zaimplementowana, po prostu nie działa. A przynajmniej tak to kiedyś działało. – ChrisF
Chodzi o to, że mieszanie trójkątów z teksturami działa na Desire. Ale nie w przypadku korzystania z buforów kolorów. – Sunkas
Dokładnie jest odwrotnie. W DirectX, jeśli funkcja jest obsługiwana, zostanie wykonana w sprzęcie. W przypadku OpenGL (w tym GL | ES) musi być obsługiwana funkcja, która nie jest rozszerzeniem. Jeśli nie w sprzęcie, to w oprogramowaniu. Dla mieszania alfa typu OpenGL | ES 1.0 jest obowiązkowe. –