Alright, I think thats the best performance I'm gonna get by tweaking the loop. Gonna move the rendering shtuff over to the kernel code

master
MitchellHansen 9 years ago
parent 5929079075
commit 515c0767a9

@ -147,7 +147,7 @@ int main(int argc, char* argv[])
// Setup the rng
std::mt19937 rng(time(NULL));
std::uniform_int_distribution<int> rgen(0, 20); // 25% chance
std::uniform_int_distribution<int> rgen(0, 12); // 25% chance
// Init the grid
char* grid = new char[GRID_WIDTH * GRID_HEIGHT* 2];
@ -190,6 +190,17 @@ int main(int argc, char* argv[])
status = clSetKernelArg(kernel, 3, sizeof(cl_mem), (void *)&gridHeightBuffer);
sf::Uint8* pixel_array = new sf::Uint8[WINDOW_X * WINDOW_Y * 4];
for (int i = 0; i < GRID_WIDTH * GRID_HEIGHT * 2; i += 2) {
int p = i / 2;
pixel_array[p * 4] = 49; // R?
pixel_array[p * 4 + 1] = 68; // G?
pixel_array[p * 4 + 2] = 72; // B?
pixel_array[p * 4 + 3] = 255; // A?
}
sf::Texture texture;
texture.create(WINDOW_X, WINDOW_Y);
sf::Sprite sprite(texture);
@ -233,21 +244,25 @@ int main(int argc, char* argv[])
for (int i = 0; i < GRID_WIDTH * GRID_HEIGHT * 2; i += 2) {
grid[i] = grid[i + 1];
if (grid[i] == 1) {
int p = i / 2;
if (grid[i + 1] == 1) {
pixel_array[(i/ 2) * 4] = 255; // R?
pixel_array[(i / 2) * 4 + 1] = 255; // G?
pixel_array[(i / 2) * 4 + 2] = 255; // B?
pixel_array[(i / 2) * 4 + 3] = 255; // A?
pixel_array[p * 4] = 255; // R?
pixel_array[p * 4 + 1] = 255; // G?
pixel_array[p * 4 + 2] = 255; // B?
pixel_array[p * 4 + 3] = 255; // A?
}
else {
pixel_array[(i / 2) * 4] = 49; // R?
pixel_array[(i / 2) * 4 + 1] = 68; // G?
pixel_array[(i / 2) * 4 + 2] = 72; // B?
pixel_array[(i / 2) * 4 + 3] = 255; // A?
else if (grid[i] == 1){
pixel_array[p * 4] = 49; // R?
pixel_array[p * 4 + 1] = 68; // G?
pixel_array[p * 4 + 2] = 72; // B?
pixel_array[p * 4 + 3] = 255; // A?
}
grid[i] = grid[i + 1];
}
texture.update(pixel_array);

Loading…
Cancel
Save