annotate render.c @ 0:443290507ab9

some minimal code
author jsipek@huey.fsl.cs.sunysb.edu
date Wed, 23 Nov 2005 23:16:20 -0400
parents
children 88acf3d645e3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
1 // System & parser
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
2 #include <string.h>
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
3 #include <stdlib.h>
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
4 #include <errno.h>
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
5 #define _GNU_SOURCE
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
6 #include <stdio.h>
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
7 #include <sys/types.h>
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
8 #include <sys/stat.h>
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
9 #include <fcntl.h>
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
10 #include <unistd.h>
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
11
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
12 // OpenGL
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
13 #include "GL/glut.h"
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
14
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
15 #define BUF_SIZE 1024
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
16
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
17 int fd;
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
18 //FILE* f;
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
19 char *buf, *ptr;
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
20
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
21 void draw_poly(char* buf)
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
22 {
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
23 float f1, f2, f3;
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
24
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
25 buf += 5;
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
26
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
27 glBegin(GL_POLYGON);
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
28 while(1) {
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
29 if (sscanf(buf, "%f %f %f", &f1, &f2, &f3) != 3)
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
30 break;
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
31 printf("using color: %f %f %f\n", f1, f2, f3);
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
32 glColor3f(f1, f2, f3);
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
33
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
34 if (sscanf(buf, "%f %f %f", &f1, &f2, &f3) != 3)
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
35 break;
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
36 printf("using vertex: %f %f %f\n", f1, f2, f3);
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
37 glVertex3f(f1, f2, f3);
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
38 }
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
39 glEnd();
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
40 }
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
41
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
42 void display(void)
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
43 {
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
44 ssize_t r;
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
45
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
46 do {
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
47 if ((ptr) >= (buf + BUF_SIZE))
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
48 break;
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
49
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
50 r = read(fd, ptr, 1);
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
51
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
52 if ((r == -1) || (r == 0) || (*ptr == '\n')) {
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
53 *ptr = '\0';
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
54 break;
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
55 }
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
56
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
57 ptr += r;
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
58 } while(1);
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
59
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
60 printf("buf = \"%s\"\n", buf);
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
61 fflush(stdout);
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
62
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
63 /* if (!strncmp(buf, "CLEAR", 5)) {
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
64 printf("clearing..\n");
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
65 fflush(stdout);*/
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
66 glClear(GL_COLOR_BUFFER_BIT);
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
67 /* } else if (!strncmp(buf, "FLUSH", 5)) {
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
68 printf("flushing..\n"); */
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
69 glBegin(GL_POLYGON);
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
70 glVertex3f(-0.5, -0.5, 0.5);
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
71 glVertex3f(-0.5, 0.5, 0.5);
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
72 glVertex3f(0.5, 0.5, 0.5);
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
73 glEnd();
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
74 glFlush();
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
75 /* } else if (!strncmp(buf, "POLY", 4))
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
76 draw_poly(buf);*/
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
77 /* else {
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
78 printf("unknown command\n");
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
79 fflush(stdout);
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
80 }*/
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
81
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
82 ptr = buf;
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
83
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
84 /* clear window */
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
85
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
86 /* draw unit square polygon */
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
87 /*glBegin(GL_POLYGON);
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
88 glVertex2f(-0.5, -0.5);
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
89 glVertex2f(-0.5, 0.5);
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
90 glVertex2f(0.5, 0.5);
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
91 glVertex2f(0.5, -0.5);
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
92 glEnd();*/
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
93
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
94 /* flush GL buffers */
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
95 }
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
96
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
97
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
98 void init()
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
99 {
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
100 /* set clear color to black */
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
101 glClearColor (0.0, 0.0, 0.0, 0.0);
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
102
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
103 /* set fill color to white */
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
104 glColor3f(1.0, 1.0, 1.0);
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
105
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
106 /* set up standard orthogonal view with clipping */
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
107 /* box as cube of side 2 centered at origin */
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
108 /* This is default view and these statement could be removed */
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
109 glMatrixMode (GL_PROJECTION);
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
110 glLoadIdentity ();
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
111 glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
112 }
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
113
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
114 #define die() __die(__FILE__, __LINE__);
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
115
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
116 void __die(char* f, int l)
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
117 {
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
118 fprintf(stderr, "Error encountered in %s:%d: %s (%d)\n", f, l, strerror(errno), errno);
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
119 }
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
120
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
121 int main(int argc, char** argv)
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
122 {
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
123 unlink("/tmp/3de.pipe");
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
124
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
125 if ((buf = (char*) malloc(sizeof(char)*BUF_SIZE)) == NULL) {
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
126 die();
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
127 }
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
128 ptr = buf;
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
129
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
130 if (mkfifo("/tmp/3de.pipe", 0777) == -1) {
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
131 die();
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
132 }
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
133
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
134 if ((fd = open("/tmp/3de.pipe", O_RDONLY | O_NONBLOCK | O_NDELAY)) == -1) {
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
135 die();
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
136 }
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
137
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
138 /*if (!(f = fdopen(fd, "r"))) {
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
139 die();
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
140 }*/
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
141
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
142 glutInit(&argc,argv);
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
143 glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
144 glutInitWindowSize(800,600);
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
145 glutInitWindowPosition(0,0);
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
146 glutCreateWindow("3D Engine");
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
147 glutDisplayFunc(display);
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
148 init();
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
149 glutMainLoop();
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
150
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
151 close(fd);
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
152
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
153 return 0;
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
154 }
443290507ab9 some minimal code
jsipek@huey.fsl.cs.sunysb.edu
parents:
diff changeset
155