Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
I love myguitar
4 / 4 / 1
Регистрация: 23.10.2012
Сообщений: 233
#1

OpenGl painter что не правильно ? - C++

05.11.2012, 21:03. Просмотров 372. Ответов 7
Метки нет (Все метки)

Deviaphan: "Где файл painter.cpp с релаизацией методов класса Painter? Я не вижу, компилятор тоже не видит."

Файл painter.cpp и .hpp лежит в одной папке вместе с остальными основными файлами проекта stdafx, targetver . Код работает до того как я начинаю рисовать в OpenGL

Работает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include "stdafx.h"
#include <iostream>
#include "painter.hpp"
#include "tetromino.hpp"
#include <GL/glut.h>
 
void display()
{
    glClear(GL_COLOR_BUFFER_BIT);
    Painter p;  
    glutSwapBuffers();
}
int main(int argc, char **argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
    glutInitWindowSize(20 * 8, 30 * 8);
    glutInitWindowPosition(0, 0);
    glutCreateWindow(" ");
    glClearColor(0, 0, 0, 1);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();  
    glOrtho(0, 10 * 8, 20 * 8, 0, -1.0, 1.0);
    glutDisplayFunc(display);
    glutMainLoop();
 
 
    return 0;
}
Не работает
Дальше я дописую
C++
1
2
3
4
5
6
7
8
9
10
           void display()
{
    glClear(GL_COLOR_BUFFER_BIT);
    Painter p;
 
     вот это  //    p.setColor(Painter::RED);
                p.rect(10, 10, 40, 50);     //
 
            glutSwapBuffers();
}
По идее должен быть красный квадрат, но выводит ошибку error LNK2001: неразрешенный внешний символ ""public: void __thiscall Painter::rect(int,int,int,int)"

Почему не рисует ? Подскажите
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2012, 21:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос OpenGl painter что не правильно ? (C++):

OpenGL Не получаеться подключить painter.hpp - C++
tetris.obj : error LNK2019: ссылка на неразрешенный внешний символ &quot;public: void __thiscall Painter::rect(int,int,int,int)&quot;...

как правильно создать opengl проэкт в IDE code blocks чтобы компилировался? - C++
создаю новый проект опенгл, но нифига не компилируется выдает кучу ошибок

Что не правильно в коде, что посоветуете дописать - C++
Дано задание (Ввести натуральное число N и последовательность действительных чисел Y1, , …,Yn . Рассчитать сумму Z1...Zn. Где Zi...

OpenGL что не так в коде? вроде все нормально - C++
Собственно вот код, я сижу под убунтой 9.10 и он ругаеться пишет #include&lt;GL/glut.h&gt; int N = 3; int n = 0; int x; int y; ...

Что-то не так с OpenGL или головой, ошибка в один пиксель - C++
Отрисовываю точку и прямоугольник в старой версии OpenGL через GLFW - прямоугольник получается ниже на пиксель. Вот код: В начале , я...

Какие параметры нужно передать в функцию opengl при ее вызове, что бы код заработал? - C++
Добрый день. Имеется код: #include &lt;GL/glut.h&gt; #include &lt;iostream&gt; int opengl(int, char **argv); void draw(void); void...

7
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,926
Записей в блоге: 1
05.11.2012, 21:43 #2
Ну значит нет такой функции Painter::rect(int,int,int,int)
1
I love myguitar
4 / 4 / 1
Регистрация: 23.10.2012
Сообщений: 233
05.11.2012, 22:06  [ТС] #3
Подскажите как будет правильней
0
I love myguitar
4 / 4 / 1
Регистрация: 23.10.2012
Сообщений: 233
05.11.2012, 22:09  [ТС] #4
Как понимаю вызов идет из этого файла

painter.hpp
C++
1
2
3
4
5
6
7
8
9
#pragma once
 
class Painter
{
public:
    enum Color{RED, WHITE,MAGENTA, BLUE, GREEN, BROWN, CYAN, BLACK };
    void rect(int x1, int y1, int x2, int y2);
    void setColor(Color);
};
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,926
Записей в блоге: 1
05.11.2012, 22:30 #5
Нет, вызов идёт из соответствующего painter.cpp файла. Он есть ли в проекте?
И если да, есть ли в нём функция void Painter::rect(int x1, int y1, int x2, int y2);
1
I love myguitar
4 / 4 / 1
Регистрация: 23.10.2012
Сообщений: 233
05.11.2012, 23:09  [ТС] #6
painter.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include "stdafx"
#include "painter.hpp"
 
#include <GL/gl.h>
 
void Painter::rect(int x1, int y1, int x2, int y2)
{
    glBegin(GL_QUADS);
    glVertex2f(x1, y1);
    glVertex2f(x2, y1);
    glVertex2f(x2, y2);
    glVertex2f(x1, y2);
    glEnd();
}
    void Painter::setColor(Color color)
    {
        static const struct
        {
            float r, g, b;
        }colors[]=
        {
            {1, 0, 0 }, //red
            {1, 1, 1 }, //white
            {1, 0, 1 }, //magenta
            {0, 0, 0.5 }, // blue 
            {0, 1, 0 }, //green
            {0.5, 0.5, 0 }, //brown
            {0, 1, 1 }, //cyan
            {0, 0, 0 }, //black
        };
        glColor3f(
            colors[color].r,
            colors[color].g,
            colors[color].b,)
    }
Добавлено через 1 минуту
painter.cpp лежит там же где и все файлы как я сказал в самом начале, значит я его не могу подключить что ли?
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,926
Записей в блоге: 1
05.11.2012, 23:18 #7
Если его нет в проекте, он не скомпилируется и не слинкуется со всеми файлами. Что за среду разработки используешь? Visual Studio? Зайди на вкладку Solution Explorer и подключи файлы к проекту.
1
I love myguitar
4 / 4 / 1
Регистрация: 23.10.2012
Сообщений: 233
06.11.2012, 00:07  [ТС] #8
Ур-р-р-а-а-а-а заработало , спасибо огромнейщее
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.11.2012, 00:07
Привет! Вот еще темы с ответами:

Как сделать так, что бы после начала игры, активным было OpenGL-окно, а не консольное? - C++
Всем привет, у Меня тут такая проблемка, даже не знаю как искать ее решение в гугле, вот и решил написать сюда. Я написал игру на с++...

что не правильно ? - C++
С новым годом всех!Подскажите пожалуйста ,что в этом коде не правильно написано и что лишнее. #define _USE_MATH_DEFINES ...

что не правильно? - C++
Я написал программу с помощью функций для транспонирования квадратной матрицы, но не пойму, как исправить ошибки. Подскажите, пожалуйста. И...

Что не правильно? - C++
#include &lt;iostream&gt; using namespace std; class kompas { int gradus; float minut; char b; public: void...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Yandex
Объявления
06.11.2012, 00:07
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru