PR
This commit is contained in:
parent
d7ccfcec8a
commit
72dc81ccb8
49
main.c
49
main.c
@ -12,7 +12,7 @@
|
||||
#include "lib.h"
|
||||
|
||||
//Screen dimension constants
|
||||
const int SCREEN_WIDTH = 1024;
|
||||
const int SCREEN_WIDTH = 1920;
|
||||
const int SCREEN_HEIGHT = 768;
|
||||
|
||||
int main(void) {
|
||||
@ -54,7 +54,7 @@ int main(void) {
|
||||
|
||||
SDL_GL_SetSwapInterval(1);
|
||||
|
||||
int res = 8;
|
||||
int res = 16;
|
||||
int width, height, c;
|
||||
unsigned char *terrain_img = stbi_load("terrain.png", &width, &height, &c, 0);
|
||||
int w = width / res;
|
||||
@ -69,7 +69,7 @@ int main(void) {
|
||||
for (int col = 0; col < w; col++) {
|
||||
int idx = (row * w + col) * 3;
|
||||
terrainVerts[idx+0] = -tw/2.0f + (float)col/w * tw;
|
||||
terrainVerts[idx+1] = *(terrain_img + (row * width + col) * c * res) * 0.015f + 1.0f;
|
||||
terrainVerts[idx+1] = *(terrain_img + (row * width + col) * c * res) * 0.01f + 1.0f;
|
||||
terrainVerts[idx+2] = -th/2.0f + (float)row/h * th;
|
||||
// *(v+1) = y * scale_y + shift_y;
|
||||
// *(v+1) = -h/2 + row
|
||||
@ -81,25 +81,40 @@ int main(void) {
|
||||
// indices for the degenerate triangles per row, except the first row
|
||||
// which only has one extra index, since the first index does not need degeneracy
|
||||
// And then since there are duplicate indices in each row
|
||||
int icount = (h-1) * (w) * 2 + ((h - 1) * 2 - 1) - 1;
|
||||
int icount = (h-1) * (w) * 2 *4;
|
||||
unsigned int *terrainIndices = malloc(icount * sizeof(unsigned int));
|
||||
|
||||
int i = 0;
|
||||
for (int row = 0; row < h-1; row++) {
|
||||
if (row != 0) {
|
||||
// Duplicate next num
|
||||
terrainIndices[i++] = row * w;
|
||||
}
|
||||
for (int col = 0; col < w; col++) {
|
||||
terrainIndices[i++] = (row + 0) * w + col;
|
||||
terrainIndices[i++] = (row + 1) * w + col;
|
||||
}
|
||||
// Duplicate last num
|
||||
if (row < h-2) {
|
||||
terrainIndices[i] = terrainIndices[i-1];
|
||||
i++;
|
||||
for (int col = 0; col < w-1; col++) {
|
||||
unsigned int topleft = row * w + col;
|
||||
unsigned int botleft = (row+1) * w + col;
|
||||
unsigned int botright = (row+1) * w + col+1;
|
||||
unsigned int topright = row * w + col+1;
|
||||
terrainIndices[i++] = topleft;
|
||||
terrainIndices[i++] = botleft;
|
||||
terrainIndices[i++] = botright;
|
||||
terrainIndices[i++] = topleft;
|
||||
terrainIndices[i++] = topright;
|
||||
terrainIndices[i++] = botright;
|
||||
}
|
||||
}
|
||||
// int i = 0;
|
||||
// for (int row = 0; row < h-1; row++) {
|
||||
// if (row != 0) {
|
||||
// // Duplicate next num
|
||||
// terrainIndices[i++] = row * w;
|
||||
// }
|
||||
// for (int col = 0; col < w; col++) {
|
||||
// terrainIndices[i++] = (row + 0) * w + col;
|
||||
// terrainIndices[i++] = (row + 1) * w + col;
|
||||
// }
|
||||
// // Duplicate last num
|
||||
// if (row < h-2) {
|
||||
// terrainIndices[i] = terrainIndices[i-1];
|
||||
// i++;
|
||||
// }
|
||||
// }
|
||||
|
||||
// float terrainVerts[] = {
|
||||
// float tv[] = {
|
||||
@ -231,7 +246,7 @@ int main(void) {
|
||||
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
|
||||
}
|
||||
glBindVertexArray(terrainVAO);
|
||||
glDrawElements(GL_TRIANGLE_STRIP, icount, GL_UNSIGNED_INT, (void*)0);
|
||||
glDrawElements(GL_TRIANGLES, icount, GL_UNSIGNED_INT, (void*)0);
|
||||
|
||||
SDL_GL_SwapWindow(window);
|
||||
}
|
||||
|
@ -5,5 +5,9 @@ out vec4 FragColor;
|
||||
void main() {
|
||||
float h = (Height + 16)/32.0f; // shift and scale the height into a grayscale value
|
||||
// FragColor = vec4(h, h, h, 1.0);
|
||||
FragColor = vec4(1, 1, 1, 1.0);
|
||||
if (Height < 1.01f) {
|
||||
FragColor = vec4(0.2f, 0.3f, 0.3f, 1.0f);
|
||||
} else {
|
||||
FragColor = vec4(1, 1, 1, 1.0);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user