Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.06.2011, 13:23   #1
likstalkera
Пользователь
 
Регистрация: 19.02.2011
Сообщений: 44
По умолчанию C++ и OpenGL

Я не пойму что надо вписать вместо текста типа my******
Или в чем там ошибка?

вот код
Код:
#include <Windows.h>
#include <gl/glut.h>
#include <gl/gl.h>

void main(int argc, char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(640,480);
glutInitWindowPosition(100,150);
glutCreateWindow("Мое первое окно сделанное с С++ и OpenGL");

glutDisplayFunc(myDisplay);
glutReshapeFunc(myReshape);
glutMouseFunc(myMouse);
glutKeyboardFunc(myKeyboard);
myInit();
glutMainLoop();

}
По книге Френсиса Хилла "OpenGL. Программирование компьютерной графики"

Последний раз редактировалось likstalkera; 30.06.2011 в 13:31.
likstalkera вне форума Ответить с цитированием
Старый 30.06.2011, 13:51   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

100% это не весь пример.
туда пишутся именя ваших функций, для прорисовки экрана(myDisplay), для обработки изменения размеров(вроде) окна(myReshape), для обработки мыши(myMouse), и обработки ввода с клавы(myKeyboard)
естественно это опционально(ну правда рисование поидее обязательно, ибо зачем вам пустое окно?)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 30.06.2011, 14:14   #3
likstalkera
Пользователь
 
Регистрация: 19.02.2011
Сообщений: 44
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
100% это не весь пример.
туда пишутся именя ваших функций, для прорисовки экрана(myDisplay), для обработки изменения размеров(вроде) окна(myReshape), для обработки мыши(myMouse), и обработки ввода с клавы(myKeyboard)
естественно это опционально(ну правда рисование поидее обязательно, ибо зачем вам пустое окно?)
А не можете исправить код и нарисовать что нибудь, так чтоб все работало?)
likstalkera вне форума Ответить с цитированием
Старый 30.06.2011, 14:30   #4
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

Код:

/*Ваши инклуды*/

#include <math.h>

GLfloat xRot = -90.0f, yRot = 0.0f, zFactor = 0.48f;
bool check;

void RenderScene(void) {
	GLfloat x, y, z, angle, val, count = 6.0f, factor, deltaAngle = 0.1f, deltaZ = 0.5f;
	GLfloat sizes[2], step, curSize;
	val = (2.0f * 3.1415f) * count;
	factor = deltaZ / deltaAngle;

	glColor3f(1.0f, 1.0f, 0.0f);
	glClear(GL_COLOR_BUFFER_BIT);
	glPushMatrix();
	glRotatef(xRot, 1.0f, 0.0f, 0.0f);
	glRotatef(yRot, 0.0f, 1.0f, 0.0f);
	glGetFloatv(GL_POINT_SIZE_RANGE, sizes);
	glGetFloatv(GL_POINT_SIZE_GRANULARITY, &step);
	curSize = sizes[0];

		z = -3.1415f * count * factor;
		for (angle = 0.0f; angle <=  val; angle += deltaAngle) {
			x = 100.0f * sin(angle);
			y = 100.0f * cos(angle);
			glPointSize(curSize);
			glBegin(GL_POINTS);
				glVertex3f(x, y, z / zFactor);
			glEnd();
			z += deltaZ;
			curSize += (step / 4.0f);
		}

	glPopMatrix();
	glutSwapBuffers();
}

void TimerFunction(int value){

	yRot += 1.0f;
	xRot += 0.5f;

	if (zFactor <= 0.48f)
		check = true;
	if (zFactor >= 3.0f)
		check = false;

	if (check)
		///zFactor += 0.02f;
		zFactor *= 1.1f;
	else
		//zFactor -= 0.25f;
		zFactor /= 1.2f;

	glutPostRedisplay();
	glutTimerFunc(50, TimerFunction, 1);

}

void SetupRC(void) {
	glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
}



void ChangeSize(GLsizei w, GLsizei h) {
	GLfloat nRange = 250.0f;
	if (h == 0)
		h = 1;
	glViewport(0, 0, w, h);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	if (w <= h)
		glOrtho(-nRange, nRange, -nRange * h / w, nRange * h / w, -nRange, nRange);

	else
		glOrtho(-nRange *w /h, nRange * w / h, -nRange, nRange, -nRange, nRange);


	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
}

int main(int argc, char *argv[]) {
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
	glutCreateWindow("Roof_Force_Spiral_points");
	glutDisplayFunc(RenderScene);
	glutReshapeFunc(ChangeSize);
	glutTimerFunc(50, TimerFunction, 1);
	SetupRC();
	glutMainLoop();
	return EXIT_SUCCESS;
}
Вот мой пример несложный. Тут можно понять что писать вместо my***
glut установлен в системе?
Изо всей благодати
В руках крепко сжатых
Я донесу только капли

Последний раз редактировалось Roof; 30.06.2011 в 14:46.
Roof вне форума Ответить с цитированием
Старый 30.06.2011, 14:49   #5
WebbMan
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 168
По умолчанию

Вот тебе простенький пример, две линии, треугольник и прямоугольник.
Код:
#include <GL/glut.h>

void display()
{
     
     glClear(GL_COLOR_BUFFER_BIT);
     glColor3f(6.0f, 3.0f, 1.0f);
          
                          glBegin(GL_LINES);
                          glVertex2f(0, 1);  
                          glVertex2f(0, -1);
                          glEnd();
                          
                          
                          glBegin(GL_LINES);
                          glVertex2f(1, 0);  
                          glVertex2f(-1, 0);
                          glEnd();
                          
                          glBegin(GL_TRIANGLES);
                          glColor3d(3, 0, 0);
                          glVertex2f(0.5, 0.2);  
                          glVertex2f(0.8, 0.2);
                          glVertex2f(0.65, 0.5);
                          glEnd();
                          
                          glBegin(GL_QUADS);
                          glColor3d(3, 1, 1);
                          glVertex2f(-0.9, 0.2);
                          glVertex2f(-0.5, 0.2);
                          glVertex2f(-0.5, 0.6);
                          glVertex2f(-0.9, 0.6);
                          glEnd();
                     
                          
                          
     glutSwapBuffers();

 }
int main(int argc, char **argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
    glutInitWindowSize(800, 600);
    glutInitWindowPosition(100, 100);
    glutCreateWindow("OpenGL GLUT");
    glClearColor(0, 0, 1, 0);
    glutDisplayFunc(display);
    glutMainLoop();
    system("pause");
    return 0;
}
WebbMan вне форума Ответить с цитированием
Старый 30.06.2011, 14:59   #6
likstalkera
Пользователь
 
Регистрация: 19.02.2011
Сообщений: 44
По умолчанию

Спасибо всем...
glut.h установлен
likstalkera вне форума Ответить с цитированием
Старый 30.06.2011, 15:10   #7
likstalkera
Пользователь
 
Регистрация: 19.02.2011
Сообщений: 44
По умолчанию

Опять что то не так... вот что вывело...
В обеих случаях так...

Код:
1>------ Построение начато: проект: 123, Конфигурация: Debug Win32 ------
1>  123.cpp
1>123.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutSwapBuffers@0 в функции "void __cdecl RenderScene(void)" (?RenderScene@@YAXXZ)
1>123.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glPopMatrix@0 в функции "void __cdecl RenderScene(void)" (?RenderScene@@YAXXZ)
1>123.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glEnd@0 в функции "void __cdecl RenderScene(void)" (?RenderScene@@YAXXZ)
1>123.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glVertex3f@12 в функции "void __cdecl RenderScene(void)" (?RenderScene@@YAXXZ)
1>123.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glBegin@4 в функции "void __cdecl RenderScene(void)" (?RenderScene@@YAXXZ)
1>123.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glPointSize@4 в функции "void __cdecl RenderScene(void)" (?RenderScene@@YAXXZ)
1>123.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glGetFloatv@8 в функции "void __cdecl RenderScene(void)" (?RenderScene@@YAXXZ)
1>123.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glRotatef@16 в функции "void __cdecl RenderScene(void)" (?RenderScene@@YAXXZ)
1>123.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glPushMatrix@0 в функции "void __cdecl RenderScene(void)" (?RenderScene@@YAXXZ)
1>123.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glClear@4 в функции "void __cdecl RenderScene(void)" (?RenderScene@@YAXXZ)
1>123.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glColor3f@12 в функции "void __cdecl RenderScene(void)" (?RenderScene@@YAXXZ)
1>123.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutTimerFunc@12 в функции "void __cdecl TimerFunction(int)" (?TimerFunction@@YAXH@Z)
1>123.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutPostRedisplay@0 в функции "void __cdecl TimerFunction(int)" (?TimerFunction@@YAXH@Z)
1>123.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glClearColor@16 в функции "void __cdecl SetupRC(void)" (?SetupRC@@YAXXZ)
1>123.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glOrtho@48 в функции "void __cdecl ChangeSize(int,int)" (?ChangeSize@@YAXHH@Z)
1>123.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glLoadIdentity@0 в функции "void __cdecl ChangeSize(int,int)" (?ChangeSize@@YAXHH@Z)
1>123.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glMatrixMode@4 в функции "void __cdecl ChangeSize(int,int)" (?ChangeSize@@YAXHH@Z)
1>123.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glViewport@16 в функции "void __cdecl ChangeSize(int,int)" (?ChangeSize@@YAXHH@Z)
1>123.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutMainLoop@0 в функции _main
1>123.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutReshapeFunc@4 в функции _main
1>123.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutDisplayFunc@4 в функции _main
1>123.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutCreateWindow@4 в функции _main
1>123.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutInitDisplayMode@4 в функции _main
1>123.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutInit@8 в функции _main
1>C:\Users\Максим\Documents\Visual Studio 2010\Projects\123\Debug\123.exe : fatal error LNK1120: 24 неразрешенных внешних элементов
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
likstalkera вне форума Ответить с цитированием
Старый 30.06.2011, 15:33   #8
WebbMan
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 168
По умолчанию

Наверно dll'ок нет или нужных библиотек, скачай с офф сайта или на эти попробуй.
имя.h в папку include/GL компилятора
имя.lib в папку lib компилятора
dll'ки в папку system32
вроде так, и не забудь нужные lib файлы подключить к проекту еще помоему надо ibopengl32.a
тоже подключить.

Последний раз редактировалось WebbMan; 30.06.2011 в 15:35.
WebbMan вне форума Ответить с цитированием
Старый 30.06.2011, 16:20   #9
likstalkera
Пользователь
 
Регистрация: 19.02.2011
Сообщений: 44
По умолчанию

А как либ подключить?
У меня visual studio express 2010...
Через #pragma comment? (только не знаю как)
likstalkera вне форума Ответить с цитированием
Старый 30.06.2011, 17:19   #10
Dogmat
Пользователь
 
Регистрация: 12.06.2008
Сообщений: 76
По умолчанию

#pragma comment(lib, "glut32.lib")
или в настройках линковщика.

а вообще у меня так работает, только lib-ы в нужные папки положил

Последний раз редактировалось Dogmat; 30.06.2011 в 17:56.
Dogmat вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
OpenGL bigory Общие вопросы C/C++ 8 24.06.2010 14:26
OpenGL Angel of death Помощь студентам 7 22.06.2010 22:58
OpenGL Paul_AG C++ Builder 20 14.09.2009 19:07
OpenGL Д'якон Компьютерное железо 5 31.01.2009 22:48
OpenGL Witaliy Gamedev - cоздание игр: Unity, OpenGL, DirectX 1 01.05.2008 21:05