Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
zirina
Gość
|
Wysłany: Czw 11:27, 23 Lis 2006 Temat postu: i znow gramy w kuli |
|
|
jak tam Wasz szanowni koledzy i kolezko programik na grafike... moze solidarnie zachorujemy na amnezje... tak na marginesie komu jeszcze dziala cpp po doinstalowaniu tej biblioteki...
|
|
Powrót do góry |
|
 |
|
 |
Grzesiek
Dołączył: 09 Cze 2006
Posty: 49
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Czw 16:48, 23 Lis 2006 Temat postu: re |
|
|
o ile dobrze wszystko zrozumialem to to ma wygladac tak [link widoczny dla zalogowanych]
chyba
mi dziala
jak bys mogla to sie zarejestruj
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
 |
Gość
|
Wysłany: Pią 10:00, 24 Lis 2006 Temat postu: |
|
|
calkiem fajne...
|
|
Powrót do góry |
|
 |
zirina
Dołączył: 24 Lis 2006
Posty: 8
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Pią 10:02, 24 Lis 2006 Temat postu: |
|
|
Anonymous napisał: | calkiem fajne...  |
napisalam ja...
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
 |
Jajo
Administrator
Dołączył: 08 Cze 2006
Posty: 30
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Pią 20:46, 24 Lis 2006 Temat postu: Re: re |
|
|
Grzesiek napisał: | o ile dobrze wszystko zrozumialem.... |
no no to Ci się udało ....
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
 |
Grzesiek.
Gość
|
Wysłany: Sob 21:31, 25 Lis 2006 Temat postu: re |
|
|
czepiasz sie
|
|
Powrót do góry |
|
 |
Jajo
Administrator
Dołączył: 08 Cze 2006
Posty: 30
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Sob 23:40, 25 Lis 2006 Temat postu: |
|
|
lekko okrojony i lekko pozmieniany kod mojej cząsteczki .... pewnie komuś się przyda
Cytat: |
//----------------------------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <gl\gl.h>
#include <gl\glut.h>
//Wymiary okna
int screen_width=800;
int screen_height=600;
void rozmiar (int width, int height)
{
screen_width=width;
screen_height=height;
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glViewport(0,0,screen_width,screen_height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(50.0,(GLfloat)screen_width/(GLfloat)screen_height,1.0f,100.0f);
glutPostRedisplay (); // Przerysowanie sceny
}
/**********************************************************
G-Ąwna metoda rysujŚca
*********************************************************/
void rysuj(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Kasowanie ekranu
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
GLUquadricObj *qobj;
qobj = gluNewQuadric();
glEnable(GL_LIGHTING);
glEnable(GL_DEPTH_TEST);
GLfloat lightPos[4] = {100,20,30,5};
glLightfv(GL_LIGHT0,GL_POSITION,lightPos);
glEnable(GL_LIGHT0);
glEnable(GL_COLOR_MATERIAL);
glTranslatef(-0.3,-0.3,-5);
glColor3f(0.3,0.6,0.2);
glutSolidSphere(0.4,50,50);
glTranslatef(0.7,1.2,-1.5);
glColor3f(0.3,0.6,0.2);
glutSolidSphere(0.4,50,50);
glTranslatef(-0.15,0.0,0.0);
glColor3f(0.8,0.7,0.3);
glRotatef(40.0,1,-0.6,0.0);
gluCylinder(qobj, 0.05, 0.05, 2.3, 50, 50);
glTranslatef(0.2,0.0,0.0);
glColor3f(0.8,0.7,0.3);
gluCylinder(qobj, 0.05, 0.05, 2.3, 50, 50);
glTranslatef(0.0,0.0,0.0);
glColor3f(0.8,0.7,0.3);
glRotatef(-120.0,1,0,0);
gluCylinder(qobj, 0.05, 0.05, 1.5, 50, 50);
glTranslatef(-0.2,0.0,0.0);
glColor3f(0.8,0.7,0.3);
gluCylinder(qobj, 0.05, 0.05, 1.5, 50, 50);
glTranslatef(0.1,0.0,1.5);
glColor3f(1.0,1.0,0.7);
glutSolidSphere(0.3,50,50);
glTranslatef(0.1,-1.5,-2.5);
glColor3f(0.8,0.7,0.3);
glRotatef(100.0,1,0,0);
gluCylinder(qobj, 0.05, 0.05, 1.5, 50, 50);
glTranslatef(-0.2,0.0,0.0);
glColor3f(0.8,0.7,0.3);
gluCylinder(qobj, 0.05, 0.05, 1.5, 50, 50);
glTranslatef(-1.1,0.0,0.35);
glColor3f(0.8,0.7,0.3);
glRotatef(90.0,0,1,0);
gluCylinder(qobj, 0.05, 0.05, 2.5, 50, 50);
glTranslatef(0.25,0.0,0.0);
glColor3f(0.8,0.7,0.3);
gluCylinder(qobj, 0.05, 0.05, 2.5, 50, 50);
glTranslatef(-0.125,0.0,-0.2);
glColor3f(1.0,1.0,0.7);
glutSolidSphere(0.3,50,50);
glTranslatef(0.0,0.0,2.9);
glColor3f(1.0,1.0,0.7);
glutSolidSphere(0.3,50,50);
glTranslatef(-1.4,0.0,-1.52);
glColor3f(1.0,1.0,0.7);
glutSolidSphere(0.3,50,50);
/*****************************************************/
glFlush(); // rysowanie w buforze
glutSwapBuffers(); // Wys-anie na ekran
}
int main(int argc, char **argv)
{
// INIT - wszystkie funkcje obs-ugi okna i przetwzrzania zdarze˝ realizuje GLUT
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(screen_width,screen_height);
glutInitWindowPosition(0,0);
glutCreateWindow("cząsteczka");
glutDisplayFunc(rysuj);// def. funkcji rysujŚcej
glutIdleFunc(rysuj);// def. funkcji rysujŚcej w czasie wolnym procesoora (w efekcie: ciŚgle wykonywanej)
glutReshapeFunc (rozmiar);// def. obs-ugi zdarzenia resize (GLUT)
// ustawienie renderowania
glEnable(GL_DEPTH_TEST);
glutMainLoop();// start obs-ugi komunikatĄw
return(0);
}
//-----------------------------------------no to tyle
|
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
 |
szymciu
Gość
|
Wysłany: Nie 8:32, 26 Lis 2006 Temat postu: |
|
|
//a oto i moja czasteczka, powodzenia
Cytat: |
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <gl\gl.h>
#include <gl\glut.h>
//Wymiary okna
int screen_width=800;
int screen_height=600;
float rotation_x;
void rozmiar (int width, int height)
{
screen_width=width;
screen_height=height;
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glViewport(0,0,screen_width,screen_height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(50.0,(GLfloat)screen_width/(GLfloat)screen_height,1.0f,100.0f);
glutPostRedisplay (); // Przerysowanie sceny
}
/**********************************************************
G-Ąwna metoda rysujŚca
*********************************************************/
void rysuj(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Kasowanie ekranu
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
GLUquadricObj *qobj;
qobj = gluNewQuadric();
glEnable(GL_LIGHTING);
glEnable(GL_DEPTH_TEST);
GLfloat lightPos[4] = {100,20,30,5};
glLightfv(GL_LIGHT0,GL_POSITION,lightPos);
glEnable(GL_LIGHT0);
glEnable(GL_COLOR_MATERIAL);
glTranslatef(-3,0,-5);
glRotatef(rotation_x, -1,0,1);
rotation_x +=0.3;
if (rotation_x > 359) rotation_x =0;
glRotatef(50,5,-17,-5);
glTranslatef(-0.3,-0.3,-5);
glColor3f(0.3,0.6,0.2);
glutSolidSphere(0.4,50,50);
glTranslatef(0.7,1.2,-1.5);
glColor3f(0.3,0.6,0.2);
glutSolidSphere(0.4,50,50);
glTranslatef(-0.15,0.0,0.0);
glColor3f(0.8,0.7,0.3);
glRotatef(40.0,1,-0.6,0.0);
gluCylinder(qobj, 0.05, 0.05, 2.3, 50, 50);
glTranslatef(0.2,0.0,0.0);
glColor3f(0.8,0.7,0.3);
gluCylinder(qobj, 0.05, 0.05, 2.3, 50, 50);
glTranslatef(0.0,0.0,0.0);
glColor3f(0.8,0.7,0.3);
glRotatef(-120.0,1,0,0);
gluCylinder(qobj, 0.05, 0.05, 1.5, 50, 50);
glTranslatef(-0.2,0.0,0.0);
glColor3f(0.8,0.7,0.3);
gluCylinder(qobj, 0.05, 0.05, 1.5, 50, 50);
glTranslatef(0.1,0.0,1.5);
glColor3f(1.0,1.0,0.7);
glutSolidSphere(0.3,50,50);
glTranslatef(0.1,-1.5,-2.5);
glColor3f(0.8,0.7,0.3);
glRotatef(100.0,1,0,0);
gluCylinder(qobj, 0.05, 0.05, 1.5, 50, 50);
glTranslatef(-0.2,0.0,0.0);
glColor3f(0.8,0.7,0.3);
gluCylinder(qobj, 0.05, 0.05, 1.5, 50, 50);
glTranslatef(-1.1,0.0,0.35);
glColor3f(0.8,0.7,0.3);
glRotatef(90.0,0,1,0);
gluCylinder(qobj, 0.05, 0.05, 2.5, 50, 50);
glTranslatef(0.25,0.0,0.0);
glColor3f(0.8,0.7,0.3);
gluCylinder(qobj, 0.05, 0.05, 2.5, 50, 50);
glTranslatef(-0.125,0.0,-0.2);
glColor3f(1.0,1.0,0.7);
glutSolidSphere(0.3,50,50);
glTranslatef(0.0,0.0,2.9);
glColor3f(1.0,1.0,0.7);
glutSolidSphere(0.3,50,50);
glTranslatef(-1.4,0.0,-1.52);
glColor3f(1.0,1.0,0.7);
glutSolidSphere(0.3,50,50);
/*****************************************************/
glFlush(); // rysowanie w buforze
glutSwapBuffers(); // Wys-anie na ekran
}
int main(int argc, char **argv)
{
// INIT - wszystkie funkcje obs-ugi okna i przetwzrzania zdarze˝ realizuje GLUT
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(screen_width,screen_height);
glutInitWindowPosition(0,0);
glutCreateWindow("cząsteczka");
glutDisplayFunc(rysuj);// def. funkcji rysujŚcej
glutIdleFunc(rysuj);// def. funkcji rysujŚcej w czasie wolnym procesoora (w efekcie: ciŚgle wykonywanej)
glutReshapeFunc (rozmiar);// def. obs-ugi zdarzenia resize (GLUT)
// ustawienie renderowania
glEnable(GL_DEPTH_TEST);
glutMainLoop();// start obs-ugi komunikatĄw
return(0);
}
|
|
|
Powrót do góry |
|
 |
zirina
Dołączył: 24 Lis 2006
Posty: 8
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Wto 13:07, 28 Lis 2006 Temat postu: |
|
|
a to moj programik i taka prosba jak mam zrobic te nozki? moze ktos mi to dopisac... te wasze sa ciekawe ale chce sama zrobic... niech ktos mi wrzuci tam te nozki posze... patrzac na wasze to i tak nie wiem gdzie ma ma to byc
Cytat: |
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <gl\gl.h>
#include <gl\glut.h>
//Wymiary okna
int screen_width=640;
int screen_height=480;
void rozmiar (int width, int height)
{
screen_width=width;
screen_height=height;
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glViewport(0,0,screen_width,screen_height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(65.0f,(GLfloat)screen_width/(GLfloat)screen_height,1.0f,10000.0f);
//glutPostRedisplay (); // Przerysowanie sceny
}
/**********************************************************
Główna metoda rysująca
*********************************************************/
void rysuj(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Kasowanie ekranu
glPolygonMode (GL_FRONT_AND_BACK, GL_FILL);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
GLfloat matSpecular1[4] = {0.5,0.5,0.5,1};
GLfloat matAmbient1[4] = {0.6,0.6,0.6,1};
GLfloat matDiffuse1[4] = {0.6,0.6,0.6,1};
GLfloat matEmission1[4] = {0,0,0,1};
GLfloat matShininess1 = 100;
GLfloat matKolorZielony[4] = {0.2,1.0,0.2,1};
GLfloat matKolorCzerwony[4] = {1,0.2,0.2,1};
GLfloat matKolorNiebieski[4] = {0.2,0.2,1};
GLfloat matKolorRoz[4] = {1,0.2,1};
glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
// wybór trybu koloryzacji materiałów, definiuje to, które właściwości materiału mają być korygowane przez wybór koloru
//GL_EMISSION, GL_AMBIENT, GL_DIFFUSE, GL_SPECULAR, GL_AMBIENT_AND_DIFFUSE
glEnable(GL_COLOR_MATERIAL); // teraz zmiana koloru wybranych cech materiału następuje poprzez zwykly glColor*()
glMaterialfv(GL_FRONT, GL_SPECULAR,matSpecular1);
glMaterialfv(GL_FRONT, GL_AMBIENT,matAmbient1);
glMaterialfv(GL_FRONT, GL_DIFFUSE,matDiffuse1);
glMaterialfv(GL_FRONT, GL_EMISSION,matEmission1);
glMateriali(GL_FRONT,GL_SHININESS,matShininess1);
GLUquadricObj *obiekt;
obiekt = gluNewQuadric();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glPopMatrix();
glPushMatrix();
glColor3fv(matKolorZielony);
glTranslatef(4,0,-20);
glutSolidSphere(3,50,50);
glRotatef(90,1,0,0);
glTranslatef(0,0,-8 );
gluCylinder(obiekt, 0.4,0.4,15,50,10);
glPopMatrix();
glPushMatrix();
glTranslatef(-4,0,-20);
glutSolidSphere(3,50,50);
glPopMatrix();
glPushMatrix();
glColor3fv(matKolorCzerwony);
glTranslatef(-4,5,-25);
glutSolidSphere(2,50,50);
glPopMatrix();
glPushMatrix();
glTranslatef(-4,-5,-15);
glutSolidSphere(2,50,50);
glPopMatrix();
glPushMatrix();
glTranslatef(4,-7,-20);
glutSolidSphere(2,50,50);
glPopMatrix();
glPushMatrix();
glTranslatef(4,7,-20);
glutSolidSphere(2,50,50);
glPopMatrix();
glPushMatrix();
glColor3fv(matKolorNiebieski);
glTranslatef(-11,0,-20);
glutSolidSphere(2,50,50);
glPopMatrix();
glPushMatrix();
glTranslatef(11,0,-20);
glutSolidSphere(2,50,50);
glRotatef(90,0,1,0);
glTranslatef(0,0,-20);
gluCylinder(obiekt, 0.4,0.4,20,50,10);
glDisable(GL_COLOR_MATERIAL);
/******************************************************/
glFlush(); // rysowanie w buforze
glutSwapBuffers(); // Wysłanie na ekran
}
int main(int argc, char **argv)
{
// INIT - wszystkie funkcje obsługi okna i przetwzrzania zdarzeń realizuje GLUT
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(screen_width,screen_height);
glutInitWindowPosition(0,0);
glutCreateWindow("Światła");
glutDisplayFunc(rysuj); // def. funkcji rysującej
//glutIdleFunc(rysuj); // def. funkcji rysującej w czasie wolnym procesoora (w efekcie: ciągle wykonywanej)
glutReshapeFunc (rozmiar); // def. obsługi zdarzenia resize (GLUT)
glEnable(GL_DEPTH_TEST);
/******* Obsługa świateł *********/
glEnable(GL_LIGHTING);
GLfloat ambientLight0[4] = {0.0,0.0,0.0,1};;
GLfloat diffuseLight0[4] = {1,1,1,1};;
GLfloat specular0[4] = {0.4,1.4,0.4,1};;
GLfloat lightPos0[4] = {-20,20,30,1};;
glLightfv(GL_LIGHT0,GL_AMBIENT,ambientLight0);
glLightfv(GL_LIGHT0,GL_DIFFUSE,diffuseLight0);
glLightfv(GL_LIGHT0,GL_SPECULAR,specular0);
glLightfv(GL_LIGHT0,GL_POSITION,lightPos0);
glEnable(GL_LIGHT0);
/******************************************************/
glutMainLoop(); // start obsługi komunikatów
return(0);
}
|
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
 |
zirina
Dołączył: 24 Lis 2006
Posty: 8
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Wto 13:10, 28 Lis 2006 Temat postu: |
|
|
a tu to drugie zadanie... wyrzucilam kostke i macie ostroslup... podstawy nie ma ale tego i tak nie widac... to main a reszta to wiecie jak (tekstura.c tekstura.h i 102.bmp dolaczyc do projektu) to dla tych ktorych nie bylo:)
kilka linijek mozna wyrzucic:P
Cytat: |
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <gl\gl.h>
#include <gl\glut.h>
#include "tekstura.h"
//Wymiary okna
int screen_width=640;
int screen_height=480;
//parametry swiatla
GLfloat ambientLight0[4] = {0.0,0.0,0.0,1};
GLfloat diffuseLight0[4] = {1,1,1,1};
GLfloat specular0[4] = {0.4,1.4,0.4,1};
GLfloat lightPos0[4] = {-3,5,-5,1};
//parametry materialow
GLfloat matSpecular1[4] = {0.5,0.5,0.5,1};
GLfloat matAmbient1[4] = {0.6,0.6,0.6,1};
GLfloat matDiffuse1[4] = {0.6,0.6,0.6,1};
GLfloat matEmission1[4] = {0,0,0,1};
GLfloat matEmission2[4] = {1,1,0,1};
GLfloat matShininess1 = 10;
GLfloat matKolorZielony[4] = {0.2,1.0,0.2,1};
GLfloat matKolorCzerwony[4] = {1,0.2,0.2,1};
GLfloat matKolorNiebieski[4] = {0.2,0.2,0.5,0.3};
GLfloat matKolorBrazowy[4] = {0.5,0.3,0,1};
GLfloat matKolorZolty[4] = {1,1,0,1};
// identyfikatory tekstur
int tex_id1;
int tex_id2;
int tex_id3;
// Wywoływana w momencie zmiany rozmiaru okna
void rozmiar (int width, int height)
{
screen_width=width;
screen_height=height;
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glViewport(0,0,screen_width,screen_height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0f,(GLfloat)screen_width/(GLfloat)screen_height,1.0f,10000.0f);
glutPostRedisplay (); // Przerysowanie sceny
}
///////////////////////////////////////////////////////////
// Rysowanie siatki podłoża jako serii pasków trójkątów.
// Modele cieniowania i kolorów ustawione są tak, że na ekranie
// widoczna jest czarno-biała szachownica.
void DrawGround(void)
{
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, tex_id3);
glMatrixMode(GL_TEXTURE); // dodatkowo - modyfikacja tekstury bezposrednio przez masierz przekształcenia
glLoadIdentity();
glRotatef(45,1,0,0);
glScalef(.5,.5,.5);
glMatrixMode(GL_MODELVIEW);
glBegin(GL_QUADS); //czworokąty
glTexCoord2f(0, 20); glVertex3f(-20, 0, -20);
glTexCoord2f(20, 20); glVertex3f(-20, 0, 20);
glTexCoord2f(20, 0); glVertex3f(20, 0,20);
glTexCoord2f(0, 0); glVertex3f(20, 0, -20);
glEnd();
glDisable(GL_TEXTURE_2D);
glShadeModel(GL_SMOOTH);
}
/**********************************************************
Główna metoda rysująca
*********************************************************/
void rysuj(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Kasowanie ekranu
glPolygonMode (GL_FRONT_AND_BACK, GL_FILL);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
/******* Materiały *********/
glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
// wybór trybu koloryzacji materiałów, definiuje to, które właściwości materiału mają być korygowane przez wybór koloru
//GL_EMISSION, GL_AMBIENT, GL_DIFFUSE, GL_SPECULAR, GL_AMBIENT_AND_DIFFUSE
glEnable(GL_COLOR_MATERIAL); // teraz zmiana koloru wybranych cech materiału następuje poprzez zwykly glColor*()
glMaterialfv(GL_FRONT, GL_SPECULAR,matSpecular1);
glMaterialfv(GL_FRONT, GL_AMBIENT,matAmbient1);
glMaterialfv(GL_FRONT, GL_DIFFUSE,matDiffuse1);
glMaterialfv(GL_FRONT, GL_EMISSION,matEmission1);
glMateriali(GL_FRONT,GL_SHININESS,matShininess1);
//ustawienie ukladu
glTranslatef(-.2,.0,-10.0);
glRotatef(15,1,0,0);
glPushMatrix();
DrawGround();
glEnable(GL_TEXTURE_2D);
//ostrosłup
glMatrixMode(GL_TEXTURE); // dodatkowo - modyfikacja tekstury bezposrednio przez masierz przekształcenia
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glBindTexture(GL_TEXTURE_2D, tex_id1);
// 1 trojkat
glPopMatrix();
glPushMatrix();
glTranslatef(-2,0,0);
glRotatef(0,0,0,0);
glScalef(1,1,1);
glBegin(GL_TRIANGLES);
glTexCoord2f(0, 0); glVertex3f(-2, 0, 0);
glTexCoord2f(2, 0); glVertex3f(0, 0, 2);
glTexCoord2f(1, 1); glVertex3f(0, 2, 0);
// 2 trojkat
glPopMatrix();
glPushMatrix();
glTranslatef(-2,0,0);
glRotatef(0,0,0,0);
glScalef(1,1,1);
glBegin(GL_TRIANGLES);
glTexCoord2f(0, 0); glVertex3f(0, 0, 2);
glTexCoord2f(2, 0); glVertex3f(2, 0, 0);
glTexCoord2f(1, 1); glVertex3f(0, 2, 0);
//3 trojkat
glPopMatrix();
glPushMatrix();
glTranslatef(-2,0,0);
glRotatef(0,0,0,0);
glScalef(1,1,1);
glBegin(GL_TRIANGLES);
glTexCoord2f(0, 0); glVertex3f(0, 0, -2);
glTexCoord2f(2, 0); glVertex3f(2, 0, 0);
glTexCoord2f(1, 1); glVertex3f(0, 2, 0);
//4 trojkat
glPopMatrix();
glPushMatrix();
glTranslatef(-2,0,0);
glRotatef(0,0,0,0);
glScalef(1,1,1);
glBegin(GL_TRIANGLES);
glTexCoord2f(0, 0); glVertex3f(-2, 0, 0);
glTexCoord2f(2, 0); glVertex3f(0, 0, -2);
glTexCoord2f(1, 1); glVertex3f(0, 2, 0);
glEnd();
//czajnik
glMatrixMode(GL_TEXTURE); // dodatkowo - modyfikacja tekstury bezposrednio przez masierz przekształcenia
glLoadIdentity();
glScalef(0.3,0.3,0.3);
glMatrixMode(GL_MODELVIEW);
glBindTexture(GL_TEXTURE_2D, tex_id2);
glColor3fv(matKolorZielony);
glPopMatrix();
glPushMatrix();
glTranslatef(2,1,0);
glRotatef(180,0,1,0);
glutSolidTeapot(1);
glDisable(GL_TEXTURE_2D);
//kubek przezroczysty
glEnable(GL_BLEND); //wlaczenie mieszania kolorow
glDepthMask(GL_FALSE); //zawieszenie rejestrowania obiektów w buforze głębokości
//ustawienie funkcji mieszącej kolory
glBlendFunc(GL_SRC_ALPHA,GL_DST_ALPHA);
//glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
//glBlendFunc(GL_SRC_ALPHA, GL_DST_ALPHA);
//glBlendFunc(GL_SRC_COLOR, GL_DST_COLOR);
//glBlendFunc(GL_ONE, GL_ONE);
// pierwszy parametr:GL_ZERO, GL_ONE, GL_DST_COLOR, GL_ONE_MINUS_DST_COLOR, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA, GL_SRC_ALPHA_SATURATE.
// drugi parametr:GL_ZERO, GL_ONE, GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA
glColor3fv(matKolorNiebieski);
glPopMatrix();
glPushMatrix();
glTranslatef(1,1,3);
glScalef(1,8,1);
glRotatef(90,1,0,0);
glutSolidTorus(0.1, 0.5 , 300, 300);
glDepthMask(GL_TRUE);
glDisable(GL_BLEND);
/******* Obsługa świateł *********/
glLoadIdentity();
//rysujemy zotla kulka w miejscu swiatla
glMaterialfv(GL_FRONT, GL_EMISSION,matEmission2);
glTranslatef(lightPos0[0],lightPos0[1]-2,lightPos0[2]-5);
glutSolidSphere(0.2,50,50);
glLightfv(GL_LIGHT0,GL_AMBIENT,ambientLight0);
glLightfv(GL_LIGHT0,GL_DIFFUSE,diffuseLight0);
glLightfv(GL_LIGHT0,GL_SPECULAR,specular0);
glLightfv(GL_LIGHT0,GL_POSITION,lightPos0);
/******************************************************/
glFlush(); // rysowanie w buforze
glutSwapBuffers(); // Wysłanie na ekran
}
int main(int argc, char **argv)
{
// INIT - wszystkie funkcje obsługi okna i przetwzrzania zdarzeń realizuje GLUT
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(screen_width,screen_height);
glutInitWindowPosition(0,0);
glutCreateWindow("Tekstury");
glutDisplayFunc(rysuj); // def. funkcji rysującej
//glutIdleFunc(rysuj); // def. funkcji rysującej w czasie wolnym procesoora (w efekcie: ciągle wykonywanej)
glutReshapeFunc (rozmiar); // def. obsługi zdarzenia resize (GLUT)
glEnable(GL_DEPTH_TEST);
glDisable(GL_COLOR_MATERIAL);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
/*******************Teksury**************************/
// ładowanie obiektów - metoda WczytajTeksture() zgłasza teksture (glBindTexture() ) pod zwracanym numerem
tex_id1 = WczytajTeksture("102.bmp");
tex_id2 = WczytajTeksture("102.bmp");
tex_id3 = WczytajTeksture("102.bmp");
if (tex_id1 == -1 || tex_id2 == -1 )
{
MessageBox(NULL,"Nie znaleziono pliku z tekstur¦", "Problem",MB_OK | MB_ICONERROR);
exit (0);
}
/******************************************************/
glutMainLoop(); // start obsługi komunikatów
return(0);
}
|
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
 |
Grzesiek
Dołączył: 09 Cze 2006
Posty: 49
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Śro 11:55, 29 Lis 2006 Temat postu: |
|
|
podstawe ostroslupa bedzie widac przy odpowiednim ustawieniu glRotatef, wiec warto ja dodac
przy wrzucaniu kodu proponuje uzyc znacznikow [Qoute] (niestety nie wiem czemu ale [Code] nie dziala ) wtedy forum bedzie bardziej przejrzyste np
Cytat: | void DrawGround(void)
{
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, tex_id3);
glMatrixMode(GL_TEXTURE); // dodatkowo - modyfikacja tekstury bezposrednio przez masierz przekształcenia
glLoadIdentity();
glRotatef(45,1,0,0);
glScalef(.5,.5,.5);
glMatrixMode(GL_MODELVIEW);
glBegin(GL_QUADS); //czworokąty
glTexCoord2f(0, 20); glVertex3f(-20, 0, -20);
glTexCoord2f(20, 20); glVertex3f(-20, 0, 20);
glTexCoord2f(20, 0); glVertex3f(20, 0,20);
glTexCoord2f(0, 0); glVertex3f(20, 0, -20);
glEnd();
glDisable(GL_TEXTURE_2D);
glShadeModel(GL_SMOOTH);
}
|
//pozwolilem sobie na edycje waszych postow
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
 |
Grzesiek
Dołączył: 09 Cze 2006
Posty: 49
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Śro 12:28, 29 Lis 2006 Temat postu: |
|
|
@ zirina
w twoim kodzie dodalem 2 'nozki' , trzecia zrob sama
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
 |
Jajo
Administrator
Dołączył: 08 Cze 2006
Posty: 30
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Sob 1:20, 09 Gru 2006 Temat postu: |
|
|
no a tak wygląda mój stożek, co do podstawy to jest "zawarta" między glBegin(GL_QUADS); a glEnd() ....... acha no i jw też można kilka zbędnych linijek wyrzucić
Cytat: |
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <windows.h>
#include <gl\gl.h>
#include <gl\glut.h>
#include "tekstura.h"
GLdouble eyex = 0;
GLdouble eyey = 0;
GLdouble eyez = 0;
double eyew=0;
double eyes=0;
double eyea=0;
double eyed=0;
double eyep=0;
double eyem=0;
//Wymiary okna
int screen_width=640;
int screen_height=480;
int pozycjaMyszyX; // na ekranie
int pozycjaMyszyY;
// identyfikatory tekstur
int tex_id1;
int tex_id2;
int tex_id3;
double kameraX;
double kameraZ;
double kameraPredkosc;
double kameraKat;
double kameraPredkoscObrotu;
//parametry swiatla
GLfloat ambientLight0[4] = {0.0,0.0,0.0,1};
GLfloat diffuseLight0[4] = {1,1,1,1};
GLfloat specular0[4] = {0.4,1.4,0.4,1};
GLfloat lightPos0[4] = {-3,6,0,8};
//parametry materialow
GLfloat matSpecular1[4] = {0.5,0.5,0.5,1};
GLfloat matAmbient1[4] = {0.6,0.6,0.6,1};
GLfloat matDiffuse1[4] = {0.6,0.6,0.6,1};
GLfloat matEmission1[4] = {0,0,0,1};
GLfloat matEmission2[4] = {1,1,0,1};
GLfloat matShininess1 = 10;
GLfloat matKolorZielony[4] = {0.2,1.0,0.2,1};
GLfloat matKolorCzerwony[4] = {1,0.2,0.2,1};
GLfloat matKolorNiebieski[4] = {0.2,0.2,0.5,0.3};
GLfloat matKolorBrazowy[4] = {0.5,0.3,0,1};
GLfloat matKolorZolty[4] = {1,1,0,1};
void resetKamery(){
kameraX = 0;
kameraZ = 0;
kameraPredkosc = 0;
kameraKat = 0;
kameraPredkoscObrotu = 0;
}
/*********************************************************/
void mysz (int button, int state, int x, int y)
{
switch (state)
{
case GLUT_UP:
kameraPredkosc = 0;
kameraPredkoscObrotu = 0;
break;
case GLUT_DOWN:
pozycjaMyszyX = x;
pozycjaMyszyY = y;
break;
}
}
void mysz_ruch (int x, int y)
{
kameraPredkoscObrotu = -(pozycjaMyszyX - x) * 0.0001;
kameraPredkosc = (pozycjaMyszyY - y) * 0.01;
}
/*********************************************************/
// Wywoływana w momencie zmiany rozmiaru okna
void rozmiar (int width, int height)
{
screen_width=width;
screen_height=height;
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glViewport(0,0,screen_width,screen_height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0f,(GLfloat)screen_width/(GLfloat)screen_height,1.0f,150.0f);
glutPostRedisplay (); // Przerysowanie sceny
}
///////////////////////////////////////////////////////////
// Rysowanie siatki podłoża jako serii pasków trójkštów.
// Modele cieniowania i kolorów ustawione sš tak, że na ekranie
// widoczna jest czarno-biała szachownica.
void DrawGround(void)
{
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, tex_id3);
glMatrixMode(GL_TEXTURE); // dodatkowo - modyfikacja tekstury bezposrednio przez masierz przekształcenia
glLoadIdentity();
glRotatef(45,1,0,0);
glScalef(.5,.5,.5);
glMatrixMode(GL_MODELVIEW);
glBegin(GL_QUADS); //czworokąty
glTexCoord2f(0, 20); glVertex3f(-20, 0, -20);
glTexCoord2f(20, 20); glVertex3f(-20, 0, 20);
glTexCoord2f(20, 0); glVertex3f(20, 0,20);
glTexCoord2f(0, 0); glVertex3f(20, 0, -20);
glEnd();
glDisable(GL_TEXTURE_2D);
glShadeModel(GL_SMOOTH);
}
/**********************************************************
Główna metoda rysujšca
*********************************************************/
void rysuj(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Kasowanie ekranu
glPolygonMode (GL_FRONT_AND_BACK, GL_FILL);
glClearColor(0.2,0.3,1,1);
glMatrixMode(GL_MODELVIEW);
kameraKat+=kameraPredkoscObrotu;
kameraX+=kameraPredkosc*sin(kameraKat);
kameraZ-=kameraPredkosc*cos(kameraKat);
glLoadIdentity();
gluLookAt (kameraX,0,kameraZ,kameraX + 100*sin(kameraKat),0,kameraZ - 100*cos(kameraKat),0,1,0); // kamera
/******* Materiały *********/
glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
// wybór trybu koloryzacji materiałów, definiuje to, które wła?ciwo?ci materiału majš być korygowane przez wybór koloru
//GL_EMISSION, GL_AMBIENT, GL_DIFFUSE, GL_SPECULAR, GL_AMBIENT_AND_DIFFUSE
glEnable(GL_COLOR_MATERIAL); // teraz zmiana koloru wybranych cech materiału następuje poprzez zwykly glColor*()
glMaterialfv(GL_FRONT, GL_SPECULAR,matSpecular1);
glMaterialfv(GL_FRONT, GL_AMBIENT,matAmbient1);
glMaterialfv(GL_FRONT, GL_DIFFUSE,matDiffuse1);
glMaterialfv(GL_FRONT, GL_EMISSION,matEmission1);
// glMateriali(GL_FRONT,GL_SHININESS,matShininess1);
//ustawienie ukladu
glTranslatef(-.2,-3,-10.0);
glPushMatrix();
DrawGround();
glEnable(GL_TEXTURE_2D);
//kostka
glMatrixMode(GL_TEXTURE); // dodatkowo - modyfikacja tekstury bezposrednio przez masierz przekształcenia
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glBindTexture(GL_TEXTURE_2D, tex_id1);
glTranslatef(-1+eyea-eyed,2.2+eyew-eyes,-2+eyep-eyem);
glRotatef(0+eyex,1,0,0);
glRotatef(-20+eyey,0,1,0);
glRotatef(0+eyez,0,0,1);
glBegin(GL_QUADS); //kwadraty
glTexCoord2f(0, ; glVertex3f(-1, 0, -1);
glTexCoord2f(8, ; glVertex3f(-1, 0, 1);
glTexCoord2f(8, 0); glVertex3f(1, 0, 1);
glTexCoord2f(0, 0); glVertex3f(1, 0, -1);
glEnd();
glBegin(GL_TRIANGLES); //trójkąty
glPopMatrix();
glTexCoord2f(0, ; glVertex3f(-1, 0, 1);
glTexCoord2f(8, ; glVertex3f(1, 0, 1);
glTexCoord2f(8, 0); glVertex3f(0, 2, 0);
glPopMatrix();
glTexCoord2f(0, ; glVertex3f(-1, 0,-1);
glTexCoord2f(8, ; glVertex3f(-1, 0, 1);
glTexCoord2f(8, 0); glVertex3f(0, 2, 0);
glPopMatrix();
glTexCoord2f(0, ; glVertex3f(1, 0,-1);
glTexCoord2f(8, ; glVertex3f(1, 0, 1);
glTexCoord2f(8, 0); glVertex3f(0, 2, 0);
glPopMatrix();
glTexCoord2f(0, ; glVertex3f(1, 0, -1);
glTexCoord2f(8, ; glVertex3f(-1, 0, -1);
glTexCoord2f(8, 0); glVertex3f(0, 2, 0);
glPushMatrix();
glEnd();
//czajnik
glMatrixMode(GL_TEXTURE);
glLoadIdentity();
glScalef(0.3,0.3,0.3);
glMatrixMode(GL_MODELVIEW);
glBindTexture(GL_TEXTURE_2D, tex_id2);
glColor3fv(matKolorZielony);
glPopMatrix();
glPushMatrix();
glTranslatef(2,1,0);
glRotatef(180,0,1,0);
glutSolidTeapot(1);
glDisable(GL_TEXTURE_2D);
//kubek przezroczysty
glEnable(GL_BLEND); //wlaczenie mieszania kolorow
glDepthMask(GL_FALSE); //zawieszenie rejestrowania obiektów w buforze głęboko?ci
//ustawienie funkcji mieszšcej kolory
glBlendFunc(GL_SRC_ALPHA,GL_DST_ALPHA);
//glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
//glBlendFunc(GL_SRC_ALPHA, GL_DST_ALPHA);
//glBlendFunc(GL_SRC_COLOR, GL_DST_COLOR);
//glBlendFunc(GL_ONE, GL_ONE);
// pierwszy parametr:GL_ZERO, GL_ONE, GL_DST_COLOR, GL_ONE_MINUS_DST_COLOR, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA, GL_SRC_ALPHA_SATURATE.
// drugi parametr:GL_ZERO, GL_ONE, GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA
glColor3fv(matKolorNiebieski);
glPopMatrix();
glPushMatrix();
glTranslatef(1,1,3);
glScalef(1,8,1);
glRotatef(90,1,0,0);
glutSolidTorus(0.1, 0.5 , 300, 300);
glDepthMask(GL_TRUE);
glDisable(GL_BLEND);
/******* Obsługa ?wiateł *********/
glPopMatrix();
glPushMatrix();
//rysujemy zotla kulka w miejscu swiatla
glMaterialfv(GL_FRONT, GL_EMISSION,matEmission2);
glTranslatef(lightPos0[0],lightPos0[1]-2,lightPos0[2]-5);
glutSolidSphere(0.2,50,50);
glLightfv(GL_LIGHT0,GL_AMBIENT,ambientLight0);
glLightfv(GL_LIGHT0,GL_DIFFUSE,diffuseLight0);
glLightfv(GL_LIGHT0,GL_SPECULAR,specular0);
glLightfv(GL_LIGHT0,GL_POSITION,lightPos0);
/******************************************************/
glPopMatrix();
glFlush(); // rysowanie w buforze
glutSwapBuffers(); // Wysłanie na ekran
}
// Reakcje na klawisze strzałek
void klawisz (GLubyte key, int x, int y)
{
switch (key) {
case 27: /* Esc - koniec */
exit(1);
break;
case ' ':
glutFullScreen();
break;
case 'x':
eyex += 5;
break;
case 'y':
eyey += 5;
break;
case 'z':
eyez += 5;
break;
case 'w':
eyew +=0.1;
break;
case 's':
eyes +=0.1;
break;
case 'd':
eyea +=0.1;
break;
case 'a':
eyed +=0.1;
break;
case '+':
eyep +=0.1;
break;
case '-':
eyem +=0.1;
break;
}
}
void obrot(GLdouble x)
{
glRotatef(x,0,0,0);
}
int main(int argc, char **argv)
{
// INIT - wszystkie funkcje obsługi okna i przetwzrzania zdarzeń realizuje GLUT
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(screen_width,screen_height);
glutInitWindowPosition(0,0);
glutCreateWindow("Piramidka");
glutDisplayFunc(rysuj); // def. funkcji rysujšcej
glutIdleFunc(rysuj); // def. funkcji rysujšcej w czasie wolnym procesoora (w efekcie: cišgle wykonywanej)
glutReshapeFunc (rozmiar); // def. obsługi zdarzenia resize (GLUT)
glEnable(GL_DEPTH_TEST);
glDisable(GL_COLOR_MATERIAL);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glutKeyboardFunc (klawisz); // def. obsługi klawiatury
glutMouseFunc(mysz); // def. obsługi zdarzenia przycisku myszy (GLUT)
glutMotionFunc(mysz_ruch); // def. obsługi zdarzenia ruchu myszy (GLUT)
/*******************Teksury**************************/
// ładowanie obiektów - metoda WczytajTeksture() zgłasza teksture (glBindTexture() ) pod zwracanym numerem
tex_id1 = WczytajTeksture("kwiatek.bmp");
tex_id2 = WczytajTeksture("cos.bmp");
tex_id3 = WczytajTeksture("curtain.bmp");
if (tex_id1 == -1 || tex_id2 == -1 )
{
MessageBox(NULL,"Nie znaleziono pliku z tekstur¦", "Problem",MB_OK | MB_ICONERROR);
exit (0);
}
/******************************************************/
resetKamery();
glutMainLoop(); // start obsługi komunikatów
return(0);
}
|
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
 |
|