Attualmente sto lavorando a un piccolo progetto in C++ e OpenGL e sto cercando di implementare uno strumento per la selezione dei colori simile a quello in Photoshop, come di seguito.Interpolazione colore OpenGL
Tuttavia sto avendo problemi con l'interpolazione della grande piazza. Lavorando sul mio computer desktop con una 8800 GTS, il risultato era simile ma la fusione non era così liscia.
Questo è il codice che sto usando:
GLfloat swatch[] = { 0,0,0, 1,1,1, mR,mG,mB, 0,0,0 };
GLint swatchVert[] = { 400,700, 400,500, 600,500, 600,700 };
glVertexPointer(2, GL_INT, 0, swatchVert);
glColorPointer(3, GL_FLOAT, 0, swatch);
glDrawArrays(GL_QUADS, 0, 4);
Passando il mio laptop con Intel Graphics HD 3000, questo risultato è stato anche peggio, con nessun cambiamento nel codice.
ho pensato che fosse OpenGL dividere il quad in due triangoli, così ho provato il rendering utilizzando triangoli e interpolando il colore nel centro della piazza me stesso ma ancora doesnt corrispondono del tutto il risultato che speravo .
Grazie per la risposta, ho poca esperienza con GLSL anche se mi sembra di ricordare di aver letto se vuoi usare uno shader devi implementare tutto perché sostituisce completamente la pipeline OpenGL? C'è un modo semplice per usare lo shader che hai fornito e applicarlo solo a una chiamata di glDrawArrays()? –
@ Will-of-fortune: fino a quando rimani con OpenGL-2.1 e sotto puoi usare gli shader in modo selettivo. Cioè utilizzare la pipeline di funzioni fisse per la maggior parte delle cose, ma uno shader solo su alcuni. Solo con core OpenGL-3 e successivo uno * deve * usare shader. Ma onestamente: usare gli shader rende la vita molto più semplice, quindi consiglio vivamente di usarli ovunque. – datenwolf
@ Will-of-fortune In genere utilizzo framework o motore grafico che semplificano la gestione degli shader. Tuttavia, vi rimando a questo: http://nehe.gamedev.net/article/glsl_an_introduction/25007/ Passate alla sezione "GLSL API Come utilizzare GLSL nella vostra applicazione OpenGL". Questa sezione ti mostrerà come incorporare glsl shader meglio di quanto potrei in questi commenti. – num3ric