View previous topic :: View next topic |
Author |
Message |
martinezzz
Joined: 02 Feb 2010 Posts: 42
|
Posted: Thu Feb 04, 2010 4:01 pm Post subject: iesaceja jautajums par OGL texturam |
|
lieta tada ir shaderis tipa
uniform sampler2D tex;
uniform sampler2D tex1;
uniform float specIntensity;
void main()
{ .....blabla
c++ koda es zinu ka es varu noradit vienu texturu ... problema ir taa
ka gribas ari tai tex1 kkadu texturu piesaistit .. nevaru saprast kaa tikai
help !! :)
p.s lasu shito http://www.lighthouse3d.com/opengl/glsl/index.php?ogluniform
tachu tur paradits tikai kaa parastus mainigos pieslegt...
tip loc1 = glGetUniformLocationARB(p,"specIntensity");
glUniform1fARB(loc1,specIntensity); |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Thu Feb 04, 2010 4:49 pm Post subject: |
|
samplerXD uniform'ā ir jāliek tekstūras units, kurai piebindota tekstūra.
Pieņemsim, ka tev GLSL'ā ir divas tekstūras:
Code: | uniform sampler2D woodTex;
uniform sampler2D grassTex; |
C/C++'ā tev ir divi uzģenerētie uint'i ar tekstūru id vērtībām (no glGenTextures funkcijas):
Code: | GLuint woodTexID;
GLuint grassTexID; |
Kad gribi šīs tekstūras izmantot šeiderī, tev vajag tās piebindot konkrētiem tekstūru unitiem:
Code: | glActiveTexture(GL_TEXURE0);
glBindTexture(GL_TEXTURE_2D, woodTexID);
glActiveTexture(GL_TEXURE1);
glBindTexture(GL_TEXTURE_2D, grassTexID); |
Tagad varēsi izmantot šīs tekstūras ņemot tekstūru sampļus no 0 un 1 unita attiecīgi koka un zāles tekstūrām. To tad arī pasaki attiecīgajam šeiderim:
Code: | glUniform1iARB(glGetUniformLocationARB(prog, "woodTexID"), 0);
glUniform1iARB(glGetUniformLocationARB(prog, "grassTexID"), 1); |
Protams, šīs divas pēdējās rindiņas vajag izdarīt tikai vienreiz - pirmo reizi pieslēdzot šeideri vai uzreiz pēc šeidera kompilācijas.
Ja gribi lietot citas tekstūras, tad vajag tikai piebindod konkrēto tekstūru id vērtības pie attiecīgajiem tekstūru unitiem. |
|
Back to top |
|
|
martinezzz
Joined: 02 Feb 2010 Posts: 42
|
Posted: Thu Feb 04, 2010 6:27 pm Post subject: |
|
OO danke .. nu mans gudraks palika :)
normals gljuks bija iekopeju tavu textu shams radija ka gl texture 1 identi fiers nav atrasts pectam to pahu iekopeju no citas lapas aizgaja :D
vel mazs jautajums vai gsls shaderos var ierakstitt varakas progas viena faila lidzigi kaa dx ?? |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
|
Back to top |
|
|
martinezzz
Joined: 02 Feb 2010 Posts: 42
|
Posted: Thu Feb 04, 2010 9:17 pm Post subject: |
|
nu kad viens fragment fails satur visus speles shaderus
taka
void main()
{
}
void main2()
{
}
utt |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Thu Feb 04, 2010 9:24 pm Post subject: |
|
Var. Bet kompilēt katru nāksies atsevišķi.
Es to šādā situācijā darītu sekojoši - sauktu galvenās funkcijas dažādos vārdos (ne main). Un tad pie katras kompilācijas kā pirmo rindiņu padotu defainu "#define FuncName main", kur FuncName ir vajadzīgās funkcijas vārds konkrētajam šeiderim. |
|
Back to top |
|
|
martinezzz
Joined: 02 Feb 2010 Posts: 42
|
Posted: Thu Feb 04, 2010 10:42 pm Post subject: |
|
aha nu ja forshi bus bik skaidriba :)
tagad atliks tikai shadowsi un amimacija bubulji divi man |
|
Back to top |
|
|
|