Уроки, алгоритмы, программы, примеры

Вход на сайт

Материалы по разделам

Построения
на плоскости (2D)
Графика
в пространстве (3D)
Вычислительная
геометрия
Физическое
моделирование
Фрактальная
графика

Новые комментарии

Спасибо за реализацию, она действительно быстрая. Но не все линии отрисовывает в нужную сторону... Необходимо добавить проверку для случая X-линии if(y1 "<" y0) grad=-grad; и аналогично для Y-линии if(x1 "<" x0) grad=-grad; P.S. На...
Отличные уроки(учу GL по ним), только в renderScene нужно добавить очистку буфера цвета и буфера глубины. При изменении размеров треугольники размножаются)
как исправить это , сделал все по инструкции
Timer1 - выдает ошибку. Использовал IdleTimer1, работает! unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls, OpenGLContext, GL, GLU; type { TForm1 } TForm1 =...
в коде присутствуют ошибки! // Считываем координаты procedure TForm1.getCoords(Sender: TObject); var j1:longint; begin n:= StrToInt(Edit2.Text); //число точек s1:=Edit1.Text; s2:=''; i := 1; j:=1; k:=0...

Счетчики и рейтинг

Яндекс.Метрика Рейтинг@Mail.ru
Скриншот к примеру
Среда программирования: 
Microsoft Visual C++2008 Express Edition
Статья по теме: 

В этой работе выполняется освещение фигуры при помощи основных функций Open GL

Код программы: 

#include <stdlib.h> // подключение библиотек 
#include <GL\glut.h> 
 
void look();
void square(){ // отстраивается одна грань кубика 
 
glBegin(GL_QUADS);  
glVertex3f(-1,-1,0); 
glVertex3f(1,-1,0); 
glVertex3f(1,1,0); 
glVertex3f(-1,1,0); 
glEnd(); 
glColor3b(0,0,0);
glBegin(GL_LINES);
glVertex3f(-0.4,1,0);
glVertex3f(-0.4,-1,0);
glVertex3f(0.4,-1,0);
glVertex3f(0.4,1,0);
 
glVertex3f(-1,0.4,0);
glVertex3f(1,0.4,0);
glVertex3f(-1,-0.4,0);
glVertex3f(1,-0.4,0);
glEnd();
 
} 
 
void cube(){ 
 
 
 
//glColor3ub(0xFF, 0x00, 0x00); //цвет грани (рисует три пары , с помощью смещения )
glPushMatrix(); 
 
glTranslatef(0, 0, -1); 
square();
//glColor3ub(0xFF, 0x00, 0x00);
glTranslatef(0, 0, 2); 
square(); 
glPopMatrix(); 
 
//glColor3ub(0x0, 0xff, 0x00); 
glPushMatrix(); 
glRotatef(90, 0, 1, 0); 
glTranslatef(0, 0, -1); 
square(); 
glTranslatef(0, 0, 2); 
//glColor3ub(0x0, 0xff, 0x00); 
square(); 
glPopMatrix(); 
 
//glColor3ub(0x00, 0x00, 0xff); 
glPushMatrix(); 
glRotatef(90, 1, 0, 0); 
glTranslatef(0, 0, -1); 
square(); 
glTranslatef(0, 0, 2); 
//glColor3ub(0x00, 0x00, 0xff); 
square(); 
glPopMatrix(); 
} 
 
float cangle = 0.02; // угол вращения 
 
void onRender(){ 
	glClearColor(100,0,1,0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //очистка буферов (двойного и глубины )
glMatrixMode(GL_MODELVIEW);
 
glPushMatrix();
glLoadIdentity();
look();// работа с освещением 
float l_diffuse[] = {0.4, 0.7, 0.2};
float l_pos[] = {-1.5, -1.5, 1.5, 1};
float s_dir[] = {1, 1, 0, -1};
glLightfv(GL_LIGHT0, GL_DIFFUSE, l_diffuse);
glLightfv(GL_LIGHT0, GL_POSITION, l_pos);
glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 0.0);
glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.2);
glLightf(GL_LIGHT0, GL_QUADRATIC_ATTENUATION, 0.4);
glPopMatrix();
 
glRotatef(cangle, 0, 0, 1); // поворот
cube();
glutSwapBuffers(); // стандартная функция двойной буферизации , для измены буфера 
} 
 
 
void look(){
	glMatrixMode(GL_MODELVIEW);
gluLookAt(-4, -4, 2, // установление точки обзора 
0, 0, 0, 
0, 0, 1); 
}
void onReshape(int w, int h){ //вызывается когда происходит изменение окна 
glViewport(0, 0, w, h); 
glMatrixMode(GL_PROJECTION); 
glLoadIdentity(); 
gluPerspective(120, w/h, 1, 100); 
 
 // переключение на матрицу моделей 
look();
 
} 
 
void initScene(){ // создаёт глубину 
glEnable(GL_DEPTH_TEST); 
} 
 
 
 
int main(int argc, char **argv){ // стандартная функция 
 
glutInit(&argc, argv); 
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH | GLUT_RGBA); 
glutInitWindowPosition(100,100); //позиции 
glutInitWindowSize(500,500); //размер 
glutCreateWindow("Sqear"); //название 
 
initScene(); 
 
glutDisplayFunc( onRender); // функция отрисовки 
glutIdleFunc(onRender); //когда не событий 
glutReshapeFunc(onReshape); 
 
glEnable(GL_LIGHT0);
glEnable(GL_LIGHT1);
 
glDisable(GL_CULL_FACE);
glEnable(GL_LIGHTING);
 
 
glutMainLoop(); //функция выполнения 
return 0; 
}