//glColor3f(color.red,color.green,color.blue);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, colorIndex);
+ glUseProgram(shaderProgram);
+ glUniform1i(glGetUniformLocation(shaderProgram, "sampler"), 0);
glEnable(GL_TEXTURE_2D);
glColor3ub(255,255,255);
glBegin(GL_QUADS);
- glTexCoord2f(.25*index.x, .125*(index.y + 1)); glVertex2i(loc.x, loc.y);
- glTexCoord2f(.25*(index.x+1), .125*(index.y + 1)); glVertex2i(loc.x + width, loc.y);
- glTexCoord2f(.25*(index.x+1), .125*index.y); glVertex2i(loc.x + width, loc.y + height);
- glTexCoord2f(.25*index.x, .125*index.y); glVertex2i(loc.x, loc.y + width);
+ glTexCoord2f(.25*index.x, .126*index.y); glVertex2i(loc.x, loc.y);
+ glTexCoord2f(.26*index.x, .126*index.y); glVertex2i(loc.x + width, loc.y);
+ glTexCoord2f(.26*index.x, .125*index.y); glVertex2i(loc.x + width, loc.y + height);
+ glTexCoord2f(.25*index.x, .125*index.y); glVertex2i(loc.x, loc.y + width);
glEnd();
glDisable(GL_TEXTURE_2D);
+ glUseProgram(0);
//glRectf(loc.x,loc.y,loc.x+width,loc.y+height);
}
bool kill(float delta){
switch(b->bsubtype){
case FOUNTAIN:
for(int r = 0; r < (rand()%25)+10;r++){
- currentWorld->addParticle(rand()%HLINE*3 + b->loc.x + b->width/2,b->loc.y + b->height, HLINE,HLINE, rand()%2 == 0?-(rand()%7)*.01:(rand()%7)*.01,((4+rand()%6)*.05), {0,0,255}, 2500);
+ currentWorld->addParticle( rand()%HLINE*3 + b->loc.x + b->width/2,
+ b->loc.y + b->height,
+ HLINE*1.25,
+ HLINE*1.25,
+ rand()%2 == 0?-(rand()%7)*.01:(rand()%7)*.01,
+ ((4+rand()%6)*.05),
+ {0.0f,0.0f,255.0f},
+ 2500);
+
currentWorld->particles.back()->fountain = true;
}
break;
GLuint tex;
} __attribute__ ((packed));
+struct index_t{
+ Color color;
+ int indexx;
+ int indexy;
+};
+
struct texture_t *LoadedTexture[256];
unsigned int LoadedTextureCounter = 0;
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, colorIndex);
GLubyte* buffer = new GLubyte[8*4*3];
- glGetTexImage(GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
+ glGetTexImage(GL_TEXTURE_2D, 0, GL_RGB, GL_UNSIGNED_BYTE, buffer);
+ GLfloat* bufferf = new GLfloat[8*4*3];
+ for(uint iu = 0; iu < 8*4*3; iu++){
+ bufferf[iu] = float(buffer[iu]) / 255.0f;
+ }
uint i = 0;
- for(uint o = 0; o < 8; o++){
- for(uint t = 0; t < 4; t++){
- for (int r = 0; r < 3; r++){
- pixels[o][t].red = buffer[i++];
- pixels[o][t].green = buffer[i++];
- pixels[o][t].blue = buffer[i++];
- std::cout << pixels[o][t].red << "," << pixels[o][t].green << "," << pixels[o][t].blue << std::endl;
- }
+ for(uint y = 0; y < 8; y++){
+ for(uint x = 0; x < 4; x++){
+ if(i >= 8*4*3){
+ return;
+ }
+ pixels[y][x].red = buffer[i++];
+ pixels[y][x].green = buffer[i++];
+ pixels[y][x].blue = buffer[i++];
+ std::cout << pixels[y][x].red << "," << pixels[y][x].green << "," << pixels[y][x].blue << std::endl;
//std::cout << std::endl;
}
}
}
//sqrt((255-145)^2+(90-145)^2+(0-0)^2);
+ std::vector<index_t>ind;
vec2 getIndex(Color c){
+ for(auto &i : ind){
+ if(c.red == i.color.red && c.green == i.color.green && c.blue == i.color.blue){
+ //std::cout << float(i.indexy) << "," << float(i.indexx) << std::endl;
+ return {float(i.indexx), float(i.indexy)};
+ }
+ }
uint buf[2];
float buff = 999;
float shit = 999;
- for(uint o = 0; o < 8; o++){
- for(uint t = 0; t < 4; t++){
- buff = sqrt(pow((c.red-pixels[o][t].red),2)+pow((c.green-pixels[o][t].green),2)+pow((c.blue-pixels[o][t].blue),2));
+ for(uint y = 0; y < 8; y++){
+ for(uint x = 0; x < 4; x++){
+ std::cout << y << "," << x << ":" << pixels[y][x].red << "," << pixels[y][x].green << "," << pixels[y][x].blue << std::endl;
+ buff = sqrt(pow((pixels[y][x].red- c.red), 2)+
+ pow((pixels[y][x].green-c.green),2)+
+ pow((pixels[y][x].blue- c.blue), 2));
//std::cout << buff << std::endl;
if(buff < shit){
shit = buff;
- buf[0] = o;
- buf[1] = t;
+ buf[0] = y;
+ buf[1] = x;
}
+ //
+ //std::cout << shit << std::endl;
}
}
+ ind.push_back({c, (int)buf[1], (int)buf[0]});
std::cout << float(buf[1]) << ", " << float(buf[0]) << std::endl;
return {float(buf[1]),float(buf[0])};
}