test
This commit is contained in:
parent
9e26b69f7b
commit
3a274a9d61
2
Makefile
2
Makefile
|
@ -1,5 +1,5 @@
|
|||
CC = gcc
|
||||
CFLAGS = -pg -g -O2 -Wall
|
||||
CFLAGS = -pg -g -Wall
|
||||
LDFLAGS = -pg -g
|
||||
LDLIBS = -lraylib -lm
|
||||
objects = c3d.o
|
||||
|
|
39
c3d.c
39
c3d.c
|
@ -1,8 +1,10 @@
|
|||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include "raylib.h"
|
||||
|
||||
|
||||
const int RENDERWIDTH = 1920;
|
||||
const int RENDERHEIGHT = 1080;
|
||||
|
||||
|
@ -85,6 +87,11 @@ double Max(double a, double b){
|
|||
}
|
||||
|
||||
|
||||
int IndexOfZBuff(int row, int col) {
|
||||
return row*RENDERWIDTH + col;
|
||||
}
|
||||
|
||||
|
||||
//sort triangle verts so that point A is the "highest" point (lowest y val) and point C is the "lowest" pont (highest y val)
|
||||
void Tri2DSortByY(Tri2D * t){
|
||||
Vector2 temp;
|
||||
|
@ -106,7 +113,7 @@ void Tri2DSortByY(Tri2D * t){
|
|||
}
|
||||
|
||||
//Draws triangle with a flat top. Note A and B must be the top points with C being the bottom "spike"
|
||||
void FillTopFlatZbuffer(Zee zee[][1080], Tri2D* t, Tri2D * tp) {
|
||||
void FillTopFlatZbuffer(Zee * zee , Tri2D* t, Tri2D * tp) {
|
||||
if (t->b.x < t->a.x) {
|
||||
Vector2 e = t->b;
|
||||
t->b = t->a;
|
||||
|
@ -123,7 +130,7 @@ void FillTopFlatZbuffer(Zee zee[][1080], Tri2D* t, Tri2D * tp) {
|
|||
for(int scanline=t->c.y; scanline >= t->a.y; scanline--){
|
||||
if (0 <= scanline && scanline < RENDERHEIGHT){
|
||||
for (int i = Max(curx1,0); i < Min(curx2,RENDERWIDTH); i++) {
|
||||
zee[i][scanline].triangle = tp;
|
||||
zee[IndexOfZBuff(i,scanline) ].triangle = tp;
|
||||
}
|
||||
}
|
||||
curx1 -= atocslopeinv; //subtract because we are working backwards (reason why we start with point c in slope equtn)
|
||||
|
@ -135,7 +142,7 @@ void PrintTri2D(Tri2D t) {
|
|||
}
|
||||
|
||||
//Draws triangle with a flat bottomp. Note B and C must be the bottom points with A being the top "spike"
|
||||
void FillBottomFlatZbuffer(Zee zee[][1080], Tri2D* t, Tri2D * tp) {
|
||||
void FillBottomFlatZbuffer(Zee * zee, Tri2D* t, Tri2D * tp) {
|
||||
if (t->c.x < t->b.x) {
|
||||
Vector2 e = t->c;
|
||||
t->c = t->b;
|
||||
|
@ -152,7 +159,7 @@ void FillBottomFlatZbuffer(Zee zee[][1080], Tri2D* t, Tri2D * tp) {
|
|||
for(int scanline=t->a.y; scanline < t->c.y; scanline++){
|
||||
if (0 <= scanline && scanline < RENDERHEIGHT){
|
||||
for (int i = Max(curx1,0); i < Min(curx2,RENDERWIDTH); i++) {
|
||||
zee[i][scanline].triangle = tp;
|
||||
zee[ IndexOfZBuff(i,scanline) ].triangle = tp;
|
||||
}
|
||||
}
|
||||
curx1 += atobslopeinv;
|
||||
|
@ -163,7 +170,7 @@ void FillBottomFlatZbuffer(Zee zee[][1080], Tri2D* t, Tri2D * tp) {
|
|||
|
||||
|
||||
|
||||
void DrawTriZuff(Zee zbuf[][1080], Tri2D * t){
|
||||
void DrawTriZuff(Zee * zbuf, Tri2D * t){
|
||||
Tri2DSortByY(t);
|
||||
|
||||
if (t->b.y == t->c.y) { // if bottom of triangle is flat
|
||||
|
@ -401,6 +408,9 @@ Tri2D ConvertTriToTri2D(Tri* t){
|
|||
rettri2d.color = t->color;
|
||||
return rettri2d;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int main() {
|
||||
proj = HALFWIDTH / tan(half_fov);
|
||||
|
||||
|
@ -454,8 +464,8 @@ int main() {
|
|||
Tri2Darr.length=0;
|
||||
Tri2Darr.arr = internaltri2darray;
|
||||
|
||||
static Zee ZBuff[1920][1080] = {{(Zee){10000,NULL}}}; //FIXME: Stupid static makes the file 32 Megs because pog
|
||||
|
||||
//static Zee ZBuff[1920][1080] = {{(Zee){10000,NULL}}}; //FIXME: Stupid static makes the file 32 Megs because pog
|
||||
Zee * ZBuff = malloc(RENDERHEIGHT*RENDERWIDTH*sizeof(Zee));
|
||||
static Color display[1920*1080*4];
|
||||
memset(display,0,sizeof(display));
|
||||
|
||||
|
@ -495,7 +505,10 @@ int main() {
|
|||
Tri2DArrayAppend(&Tri2Darr,ConvertTriToTri2D(&TransformedTris.arr[i]));
|
||||
}
|
||||
|
||||
memset(ZBuff,0,sizeof(ZBuff));
|
||||
//memset(ZBuff,NULL ,sizeof(Zee) * RENDERHEIGHT*RENDERWIDTH );
|
||||
for (int i = 0; i < RENDERHEIGHT*RENDERWIDTH; i ++) {
|
||||
ZBuff[i] = (Zee){10000,NULL};
|
||||
}
|
||||
memset(display,0,sizeof(display));
|
||||
|
||||
|
||||
|
@ -538,12 +551,16 @@ int main() {
|
|||
display[index+2] = c->b;
|
||||
display[index+3] = c->a;
|
||||
*/
|
||||
printf("%d\n",IndexOfZBuff(x,y));
|
||||
ZBuff[IndexOfZBuff(x,y)].triangle = NULL;
|
||||
|
||||
|
||||
if (ZBuff[x][y].triangle != NULL) {
|
||||
if (ZBuff[IndexOfZBuff(x,y)].triangle != NULL) {
|
||||
//DrawPixel(x,y,ZBuff[x][y].triangle->color);
|
||||
|
||||
display[index] = ZBuff[x][y].triangle->color;
|
||||
//display[index] = ZBuff[IndexOfZBuff(x,y)].triangle->color;
|
||||
Zee test = ZBuff[IndexOfZBuff(x,y)];
|
||||
display[index] = test.triangle->color;
|
||||
|
||||
}
|
||||
index = index+1;
|
||||
|
||||
|
|
Loading…
Reference in a new issue