two main functions, one for testing??
This commit is contained in:
parent
5f5c660190
commit
b4a7ec7cc3
@ -93,7 +93,7 @@ void update_app(App* app)
|
||||
void init_opengl()
|
||||
{
|
||||
// https://gitlab.com/imre-piller/me-courses/ alapjan.
|
||||
/* glShadeModel(GL_SMOOTH);
|
||||
glShadeModel(GL_SMOOTH);
|
||||
|
||||
glEnable(GL_NORMALIZE);
|
||||
glEnable(GL_AUTO_NORMAL);
|
||||
@ -106,7 +106,7 @@ void init_opengl()
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
glClearDepth(1.0);
|
||||
glEnable(GL_TEXTURE_2D);
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
void reshape(GLsizei width, GLsizei height)
|
||||
|
17
src/camera.c
17
src/camera.c
@ -108,13 +108,8 @@ void update_camera(Camera* camera, double time)
|
||||
} else {
|
||||
puts("is block");
|
||||
camera->speed.z = 0;
|
||||
|
||||
while(is_block(camera->cm->chunks[i].blocks[(int)camera->position.x]
|
||||
[(int)camera->position.y]
|
||||
[(int)camera->position.z-1])) {
|
||||
camera->position.z+=0.2;
|
||||
print_vec3f(camera->position, "camera");
|
||||
}
|
||||
float diff = ceil(camera->position.z) - camera->position.z;
|
||||
camera->position.z += diff;
|
||||
}
|
||||
|
||||
if(!is_block(camera->cm->chunks[i].blocks[(int)x1][(int)y1][(int)z1-1])) {
|
||||
@ -128,12 +123,8 @@ void update_camera(Camera* camera, double time)
|
||||
puts("is block");
|
||||
camera->speed.z = 0;
|
||||
|
||||
while(is_block(camera->cm->chunks[i].blocks[(int)camera->position.x]
|
||||
[(int)camera->position.y]
|
||||
[(int)camera->position.z-1])) {
|
||||
camera->position.z+=0.2;
|
||||
print_vec3f(camera->position, "camera");
|
||||
}
|
||||
float diff = ceil(camera->position.z) - camera->position.z;
|
||||
camera->position.z += diff;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -95,15 +95,10 @@ void draw_cube(ChunkManager *cm, Block_type type, float x, float y, float z)
|
||||
glTexCoord2f(1, 1); glVertex3f(x+1.0, y-1.0, z-1.0); // Bottom-Left of left face
|
||||
glTexCoord2f(1, 0); glVertex3f(x+1.0, y-1.0, z); // Bottom-Right of left face
|
||||
glEnd();
|
||||
glFlush();
|
||||
}
|
||||
|
||||
void chunk_create_displayl(ChunkManager *cm, Chunk *chunk)
|
||||
{
|
||||
|
||||
|
||||
|
||||
//glBindTexture(GL_TEXTURE_2D, 1);
|
||||
chunk->id = glGenLists(1);
|
||||
glBindTexture(GL_TEXTURE_2D, cm->textures[0].tid);
|
||||
glNewList(chunk->id, GL_COMPILE);
|
||||
|
196
src/main.c
196
src/main.c
@ -14,215 +14,21 @@ int main()
|
||||
app.cm = &cm;
|
||||
init_app(&app, 1600, 900);
|
||||
|
||||
/////
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
glLoadIdentity();
|
||||
|
||||
glShadeModel(GL_SMOOTH);
|
||||
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
|
||||
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
|
||||
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
|
||||
|
||||
glClearDepth(1.0f);
|
||||
glDepthFunc(GL_LEQUAL);
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
//glEnable(GL_CULL_FACE);
|
||||
|
||||
glEnable(GL_NORMALIZE);
|
||||
|
||||
|
||||
GLuint shadowmap_texture;
|
||||
|
||||
float light_proj_matrix[16];
|
||||
float light_view_matrix[16];
|
||||
float cam_proj_matrix[16];
|
||||
float cam_view_matrix[16];
|
||||
|
||||
glGenTextures(1, &shadowmap_texture);
|
||||
glBindTexture(GL_TEXTURE_2D, shadowmap_texture);
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT24,
|
||||
SHADOWMAP_SIZE, SHADOWMAP_SIZE, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, NULL);
|
||||
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||
|
||||
glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
|
||||
glEnable(GL_COLOR_MATERIAL);
|
||||
|
||||
//GLfloat materialColor[] = {1.0f, 1.0f, 1.0f, 1.0f};
|
||||
//glMaterialfv(GL_FRONT, GL_SPECULAR, materialColor);
|
||||
glMaterialf(GL_FRONT, GL_SHININESS, 64.0f);
|
||||
|
||||
|
||||
|
||||
|
||||
//reshape(1600, 900);
|
||||
glPushMatrix();
|
||||
glLoadIdentity();
|
||||
gluPerspective(45.0f, (float)1600/900, 1.0f, 10000.0f);
|
||||
glGetFloatv(GL_MODELVIEW_MATRIX, cam_proj_matrix);
|
||||
|
||||
|
||||
|
||||
glLoadIdentity();
|
||||
gluPerspective(45.0, 1.0, 2.0, 10000.0);
|
||||
glGetFloatv(GL_MODELVIEW_MATRIX, light_proj_matrix);
|
||||
|
||||
glLoadIdentity();
|
||||
gluLookAt(80, 80, 90,
|
||||
20.0, 20.0, 10.0,
|
||||
0.0, 0.0, 1.0);
|
||||
glGetFloatv(GL_MODELVIEW_MATRIX, light_view_matrix);
|
||||
|
||||
glPopMatrix();
|
||||
/////
|
||||
while(app.is_running) {
|
||||
clock_gettime(CLOCK_MONOTONIC_RAW, &start);
|
||||
|
||||
vec3f cd = get_camera_dir_vec3f(&app.camera);
|
||||
vec3f cp = app.camera.position;
|
||||
|
||||
// glLoadIdentity();
|
||||
// gluLookAt(cp.x, cp.y, cp.z,
|
||||
// 10.0, 10.0, 30.0,
|
||||
// 0.0, 0.0, 1.0);
|
||||
set_view(&app.camera);
|
||||
glGetFloatv(GL_MODELVIEW_MATRIX, cam_view_matrix);
|
||||
|
||||
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glLoadMatrixf(light_proj_matrix);
|
||||
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
glLoadMatrixf(light_view_matrix);
|
||||
|
||||
glViewport(0, 0, SHADOWMAP_SIZE, SHADOWMAP_SIZE);
|
||||
|
||||
glCullFace(GL_FRONT);
|
||||
|
||||
glShadeModel(GL_FLAT);
|
||||
glColorMask(0, 0, 0, 0);
|
||||
|
||||
for (int i = 0; i < app.cm->chunk_count; i++) {
|
||||
chunk_render(&app.cm->chunks[i]);
|
||||
//printf("c sp: %f\n", app.chunks[i].start_pos.x);
|
||||
}
|
||||
|
||||
glBindTexture(GL_TEXTURE_2D, shadowmap_texture);
|
||||
glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, SHADOWMAP_SIZE, SHADOWMAP_SIZE);
|
||||
|
||||
glCullFace(GL_BACK);
|
||||
//glDisable(GL_CULL_FACE);
|
||||
glShadeModel(GL_SMOOTH);
|
||||
glColorMask(1, 1, 1, 1);
|
||||
|
||||
glClear(GL_DEPTH_BUFFER_BIT);
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glLoadMatrixf(cam_proj_matrix);
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
glLoadMatrixf(cam_view_matrix);
|
||||
glViewport(0, 0, 1600, 900);
|
||||
///////////////
|
||||
|
||||
handle_events(&app);
|
||||
update_app(&app);
|
||||
|
||||
float color1[4] = {0, 0, 0, 0};
|
||||
float color2[4] = {0, 0, 0, 0};
|
||||
float color3[4] = {1.0, 1.0, 1.0, 0.0};
|
||||
float light_pos[4] = {80, 80, 90, 0};
|
||||
glLightfv(GL_LIGHT1, GL_POSITION, light_pos);
|
||||
glLightfv(GL_LIGHT1, GL_AMBIENT, color1);
|
||||
glLightfv(GL_LIGHT1, GL_DIFFUSE, color1);
|
||||
glLightfv(GL_LIGHT1, GL_SPECULAR, color2);
|
||||
glEnable(GL_LIGHT1);
|
||||
glEnable(GL_LIGHTING);
|
||||
|
||||
//glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
|
||||
//set_view(&app.camera);
|
||||
set_view(&app.camera);
|
||||
for (int i = 0; i < app.cm->chunk_count; i++) {
|
||||
chunk_render(&app.cm->chunks[i]);
|
||||
//printf("c sp: %f\n", app.chunks[i].start_pos.x);
|
||||
}
|
||||
|
||||
glLightfv(GL_LIGHT1, GL_DIFFUSE, color3);
|
||||
glLightfv(GL_LIGHT1, GL_SPECULAR, color3);
|
||||
float bias[16] = {0.5f, 0.0f, 0.0f, 0.0f,
|
||||
0.0f, 0.5f, 0.0f, 0.0f,
|
||||
0.0f, 0.0f, 0.5f, 0.0f,
|
||||
0.5f, 0.5f, 0.5f, 1.0f};
|
||||
float m1[16];
|
||||
float tm[16];
|
||||
mult_matrix(bias, light_proj_matrix, m1);
|
||||
mult_matrix(m1, light_view_matrix, tm);
|
||||
|
||||
float v1[4] = {tm[0], tm[1], tm[2], tm[3]};
|
||||
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);
|
||||
glTexGenfv(GL_S, GL_EYE_PLANE, v1);
|
||||
glEnable(GL_TEXTURE_GEN_S);
|
||||
float v2[4] = {tm[4], tm[5], tm[6], tm[7]};
|
||||
glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);
|
||||
glTexGenfv(GL_T, GL_EYE_PLANE, v2);
|
||||
glEnable(GL_TEXTURE_GEN_T);
|
||||
float v3[4] = {tm[8], tm[9], tm[10], tm[11]};
|
||||
glTexGeni(GL_R, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);
|
||||
glTexGenfv(GL_R, GL_EYE_PLANE, v3);
|
||||
glEnable(GL_TEXTURE_GEN_R);
|
||||
float v4[4] = {tm[12], tm[13], tm[14], tm[15]};
|
||||
glTexGeni(GL_Q, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);
|
||||
glTexGenfv(GL_Q, GL_EYE_PLANE, v4);
|
||||
glEnable(GL_TEXTURE_GEN_Q);
|
||||
|
||||
glBindTexture(GL_TEXTURE_2D, shadowmap_texture);
|
||||
glEnable(GL_TEXTURE_2D);
|
||||
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE_ARB, GL_COMPARE_R_TO_TEXTURE);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC_ARB, GL_LEQUAL);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_DEPTH_TEXTURE_MODE_ARB, GL_INTENSITY);
|
||||
glAlphaFunc(GL_GEQUAL, 0.99f);
|
||||
glEnable(GL_ALPHA_TEST);
|
||||
|
||||
//glMatrixMode(GL_MODELVIEW);
|
||||
for (int i = 0; i < app.cm->chunk_count; i++) {
|
||||
chunk_render(&app.cm->chunks[i]);
|
||||
//printf("c sp: %f\n", app.chunks[i].start_pos.x);
|
||||
}
|
||||
|
||||
glDisable(GL_TEXTURE_2D);
|
||||
|
||||
glDisable(GL_TEXTURE_GEN_S);
|
||||
glDisable(GL_TEXTURE_GEN_T);
|
||||
glDisable(GL_TEXTURE_GEN_R);
|
||||
glDisable(GL_TEXTURE_GEN_Q);
|
||||
|
||||
glDisable(GL_LIGHTING);
|
||||
glDisable(GL_ALPHA_TEST);
|
||||
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glPushMatrix();
|
||||
glLoadIdentity();
|
||||
gluOrtho2D(-1.0f, 1.0f, -1.0f, 1.0f);
|
||||
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
glPushMatrix();
|
||||
glLoadIdentity();
|
||||
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glPopMatrix();
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
glPopMatrix();
|
||||
|
||||
glFinish();
|
||||
////////////
|
||||
vec3f pos = app.camera.position;
|
||||
// vec3f dir = get_camera_dir_vec3f(&app.camera);
|
||||
|
||||
// draw_cube(&app, pos.x + dir.x*3, pos.y + dir.y*3, pos.z + dir.z*3);
|
||||
|
||||
SDL_GL_SwapWindow(app.window);
|
||||
|
||||
|
240
src/main1.c
Normal file
240
src/main1.c
Normal file
@ -0,0 +1,240 @@
|
||||
#include "../include/app.h"
|
||||
#include <GL/gl.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
#include <GL/glu.h>
|
||||
|
||||
#define SHADOWMAP_SIZE 2048
|
||||
int main()
|
||||
{
|
||||
struct timespec start;
|
||||
struct timespec end;
|
||||
App app;
|
||||
ChunkManager cm;
|
||||
app.cm = &cm;
|
||||
init_app(&app, 1600, 900);
|
||||
|
||||
/////
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
glLoadIdentity();
|
||||
|
||||
glShadeModel(GL_SMOOTH);
|
||||
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
|
||||
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
|
||||
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
|
||||
|
||||
glClearDepth(1.0f);
|
||||
glDepthFunc(GL_LEQUAL);
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
//glEnable(GL_CULL_FACE);
|
||||
|
||||
glEnable(GL_NORMALIZE);
|
||||
|
||||
|
||||
GLuint shadowmap_texture;
|
||||
|
||||
float light_proj_matrix[16];
|
||||
float light_view_matrix[16];
|
||||
float cam_proj_matrix[16];
|
||||
float cam_view_matrix[16];
|
||||
|
||||
glGenTextures(1, &shadowmap_texture);
|
||||
glBindTexture(GL_TEXTURE_2D, shadowmap_texture);
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT24,
|
||||
SHADOWMAP_SIZE, SHADOWMAP_SIZE, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, NULL);
|
||||
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||
|
||||
glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
|
||||
glEnable(GL_COLOR_MATERIAL);
|
||||
|
||||
//GLfloat materialColor[] = {1.0f, 1.0f, 1.0f, 1.0f};
|
||||
//glMaterialfv(GL_FRONT, GL_SPECULAR, materialColor);
|
||||
glMaterialf(GL_FRONT, GL_SHININESS, 64.0f);
|
||||
|
||||
|
||||
|
||||
|
||||
//reshape(1600, 900);
|
||||
glPushMatrix();
|
||||
glLoadIdentity();
|
||||
gluPerspective(45.0f, (float)1600/900, 1.0f, 10000.0f);
|
||||
glGetFloatv(GL_MODELVIEW_MATRIX, cam_proj_matrix);
|
||||
|
||||
|
||||
|
||||
glLoadIdentity();
|
||||
gluPerspective(45.0, 1.0, 2.0, 10000.0);
|
||||
glGetFloatv(GL_MODELVIEW_MATRIX, light_proj_matrix);
|
||||
|
||||
glLoadIdentity();
|
||||
gluLookAt(80, 80, 90,
|
||||
20.0, 20.0, 10.0,
|
||||
0.0, 0.0, 1.0);
|
||||
glGetFloatv(GL_MODELVIEW_MATRIX, light_view_matrix);
|
||||
|
||||
glPopMatrix();
|
||||
/////
|
||||
while(app.is_running) {
|
||||
clock_gettime(CLOCK_MONOTONIC_RAW, &start);
|
||||
|
||||
vec3f cd = get_camera_dir_vec3f(&app.camera);
|
||||
vec3f cp = app.camera.position;
|
||||
|
||||
// glLoadIdentity();
|
||||
// gluLookAt(cp.x, cp.y, cp.z,
|
||||
// 10.0, 10.0, 30.0,
|
||||
// 0.0, 0.0, 1.0);
|
||||
set_view(&app.camera);
|
||||
glGetFloatv(GL_MODELVIEW_MATRIX, cam_view_matrix);
|
||||
|
||||
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glLoadMatrixf(light_proj_matrix);
|
||||
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
glLoadMatrixf(light_view_matrix);
|
||||
|
||||
glViewport(0, 0, SHADOWMAP_SIZE, SHADOWMAP_SIZE);
|
||||
|
||||
glCullFace(GL_FRONT);
|
||||
|
||||
glShadeModel(GL_FLAT);
|
||||
glColorMask(0, 0, 0, 0);
|
||||
|
||||
for (int i = 0; i < app.cm->chunk_count; i++) {
|
||||
chunk_render(&app.cm->chunks[i]);
|
||||
//printf("c sp: %f\n", app.chunks[i].start_pos.x);
|
||||
}
|
||||
|
||||
glBindTexture(GL_TEXTURE_2D, shadowmap_texture);
|
||||
glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, SHADOWMAP_SIZE, SHADOWMAP_SIZE);
|
||||
|
||||
glCullFace(GL_BACK);
|
||||
//glDisable(GL_CULL_FACE);
|
||||
glShadeModel(GL_SMOOTH);
|
||||
glColorMask(1, 1, 1, 1);
|
||||
|
||||
glClear(GL_DEPTH_BUFFER_BIT);
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glLoadMatrixf(cam_proj_matrix);
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
glLoadMatrixf(cam_view_matrix);
|
||||
glViewport(0, 0, 1600, 900);
|
||||
///////////////
|
||||
|
||||
handle_events(&app);
|
||||
update_app(&app);
|
||||
|
||||
float color1[4] = {0, 0, 0, 0};
|
||||
float color2[4] = {0, 0, 0, 0};
|
||||
float color3[4] = {1.0, 1.0, 1.0, 0.0};
|
||||
float light_pos[4] = {80, 80, 90, 0};
|
||||
glLightfv(GL_LIGHT1, GL_POSITION, light_pos);
|
||||
glLightfv(GL_LIGHT1, GL_AMBIENT, color1);
|
||||
glLightfv(GL_LIGHT1, GL_DIFFUSE, color1);
|
||||
glLightfv(GL_LIGHT1, GL_SPECULAR, color2);
|
||||
glEnable(GL_LIGHT1);
|
||||
glEnable(GL_LIGHTING);
|
||||
|
||||
//glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
|
||||
//set_view(&app.camera);
|
||||
for (int i = 0; i < app.cm->chunk_count; i++) {
|
||||
chunk_render(&app.cm->chunks[i]);
|
||||
//printf("c sp: %f\n", app.chunks[i].start_pos.x);
|
||||
}
|
||||
|
||||
glLightfv(GL_LIGHT1, GL_DIFFUSE, color3);
|
||||
glLightfv(GL_LIGHT1, GL_SPECULAR, color3);
|
||||
float bias[16] = {0.5f, 0.0f, 0.0f, 0.0f,
|
||||
0.0f, 0.5f, 0.0f, 0.0f,
|
||||
0.0f, 0.0f, 0.5f, 0.0f,
|
||||
0.5f, 0.5f, 0.5f, 1.0f};
|
||||
float m1[16];
|
||||
float tm[16];
|
||||
mult_matrix(bias, light_proj_matrix, m1);
|
||||
mult_matrix(m1, light_view_matrix, tm);
|
||||
|
||||
float v1[4] = {tm[0], tm[1], tm[2], tm[3]};
|
||||
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);
|
||||
glTexGenfv(GL_S, GL_EYE_PLANE, v1);
|
||||
glEnable(GL_TEXTURE_GEN_S);
|
||||
float v2[4] = {tm[4], tm[5], tm[6], tm[7]};
|
||||
glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);
|
||||
glTexGenfv(GL_T, GL_EYE_PLANE, v2);
|
||||
glEnable(GL_TEXTURE_GEN_T);
|
||||
float v3[4] = {tm[8], tm[9], tm[10], tm[11]};
|
||||
glTexGeni(GL_R, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);
|
||||
glTexGenfv(GL_R, GL_EYE_PLANE, v3);
|
||||
glEnable(GL_TEXTURE_GEN_R);
|
||||
float v4[4] = {tm[12], tm[13], tm[14], tm[15]};
|
||||
glTexGeni(GL_Q, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);
|
||||
glTexGenfv(GL_Q, GL_EYE_PLANE, v4);
|
||||
glEnable(GL_TEXTURE_GEN_Q);
|
||||
|
||||
glBindTexture(GL_TEXTURE_2D, shadowmap_texture);
|
||||
glEnable(GL_TEXTURE_2D);
|
||||
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE_ARB, GL_COMPARE_R_TO_TEXTURE);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC_ARB, GL_LEQUAL);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_DEPTH_TEXTURE_MODE_ARB, GL_INTENSITY);
|
||||
glAlphaFunc(GL_GEQUAL, 0.99f);
|
||||
glEnable(GL_ALPHA_TEST);
|
||||
|
||||
//glMatrixMode(GL_MODELVIEW);
|
||||
for (int i = 0; i < app.cm->chunk_count; i++) {
|
||||
chunk_render(&app.cm->chunks[i]);
|
||||
//printf("c sp: %f\n", app.chunks[i].start_pos.x);
|
||||
}
|
||||
|
||||
glDisable(GL_TEXTURE_2D);
|
||||
|
||||
glDisable(GL_TEXTURE_GEN_S);
|
||||
glDisable(GL_TEXTURE_GEN_T);
|
||||
glDisable(GL_TEXTURE_GEN_R);
|
||||
glDisable(GL_TEXTURE_GEN_Q);
|
||||
|
||||
glDisable(GL_LIGHTING);
|
||||
glDisable(GL_ALPHA_TEST);
|
||||
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glPushMatrix();
|
||||
glLoadIdentity();
|
||||
gluOrtho2D(-1.0f, 1.0f, -1.0f, 1.0f);
|
||||
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
glPushMatrix();
|
||||
glLoadIdentity();
|
||||
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glPopMatrix();
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
glPopMatrix();
|
||||
|
||||
glFinish();
|
||||
////////////
|
||||
vec3f pos = app.camera.position;
|
||||
// vec3f dir = get_camera_dir_vec3f(&app.camera);
|
||||
|
||||
// draw_cube(&app, pos.x + dir.x*3, pos.y + dir.y*3, pos.z + dir.z*3);
|
||||
|
||||
SDL_GL_SwapWindow(app.window);
|
||||
|
||||
clock_gettime(CLOCK_MONOTONIC_RAW, &end);
|
||||
app.frame_time = calc_frame_time(&start, &end);
|
||||
|
||||
printf("fps: %f\n", 1000/app.frame_time);
|
||||
//printf("lkat pos x: %f y: %f z: %f\n", pos.x+5*dir.x, pos.y+5*dir.y, pos.z+5*dir.z);
|
||||
printf("camera x: %f y: %f z: %f\n", pos.x, pos.y, pos.z);
|
||||
//printf("dir x: %f y: %f z: %f\n", dir.x, dir.y, dir.z);
|
||||
printf("dird x: %f y: %f z: %f\n", app.camera.rotation.x, app.camera.rotation.y, app.camera.rotation.z);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user