Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Help with openGL, Help with openGL 
:(
    Опции темы
DimDimich
  Дата 3.1.2004, 13:42 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Мудрые парни помогите чайнику !!!!
Начал учить openGL и зашел в тупик.
Задача :
Нарисовать квадрат с рамкой одного цвета и менять цвет заливки, не меняя цвета рамки.

Еси можно выложите код.

Зарание спасибо.

PS or admin :
Если бы был отдельный раздел для openGL, было бы здорово и народу бы прибавилось

  Вверх
.RADIX
Дата 3.1.2004, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 19.11.2003

Репутация: нет
Всего: 0



Есть эл. книга "OpenGL для начинающих", там это есть.
Зарули на сайт Программирование для начинающих
Можешь по этому форуму походить, здесь были рек. ссылки для новичков в программировании.


--------------------
ASM Forever
PM MAIL   Вверх
<Spawn>
Дата 3.1.2004, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: нет
Всего: 64



Вот тебе примерчик в Билдере(не знаю есть ли функция закрашивания полигона, я сделал просто обрисовку его линией (сам пару дней с OpenGL только работал) ):

Код
class TForm1 : public TForm
{
__published: // IDE-managed Components
       void __fastcall FormPaint(TObject *Sender);
private: // User declarations
public:  // User declarations
       HGLRC hrc;
       void __fastcall SetDCPixelFormat(HDC dc);
       __fastcall TForm1(TComponent* Owner);
};



Зеленый полигон, красная окантовка.

Код
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include <gl\gl.h>
#include <gl\glu.h>
#include <math.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
       : TForm(Owner)
{
       SetDCPixelFormat(Canvas->Handle);
       hrc = wglCreateContext(Canvas->Handle);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::SetDCPixelFormat(HDC dc)
{
       int nPixel;
       TPixelFormatDescriptor pfd;
       nPixel = ChoosePixelFormat(dc, &pfd);
       SetPixelFormat(dc, nPixel, &pfd);
}
void __fastcall TForm1::FormPaint(TObject *Sender)
{
       wglMakeCurrent(Canvas->Handle, hrc);
       glClearColor(0.5, 0.5, 0.75, 1.0);
       glClear(GL_COLOR_BUFFER_BIT);
       glViewport(0, 0, ClientWidth, ClientHeight);

       glRotatef(45.0, 0.0, 0.0, 1.0);

       glBegin(GL_POLYGON);
               glColor3f(0.0, 1.0, 0.0);
               for (int i = 0; i < 4; i++)
                       glVertex2f(0.5 * cos(2 * M_PI * i / 4),
                                  0.5 * sin(2 * M_PI * i / 4));
       glEnd();

       glBegin(GL_LINE_LOOP);
               glColor3f(1.0, 0.0, 0.0);
               for (int i = 0; i < 4; i++)
                       glVertex2f(0.5 * cos(2 * M_PI * i / 4),
                                  0.5 * sin(2 * M_PI * i / 4));
       glEnd();

       glRotatef(- 45, 0.0, 0.0, 1.0);


       wglMakeCurrent(0, 0);
}


Это сообщение отредактировал(а) <Spawn> - 3.1.2004, 17:57


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
DimDimich
Дата 3.1.2004, 20:28 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Спасибо парни !!!!

Нарисовать полигон и сделать ему кантик, до этого то я и сам допер.
Проблема что когда ты меняеш цвет внутреннего обьекта то твой кантик исчезает и каждый раз приходится делать двойную работу, тобиш дорисовывать окантовку.

Я решил проблемку чуть подругому: есть вершины внешней фигуры например прямоугольника тебе нужно нврисовать внутренний прямоугольник где каждая вершина = внешняя вершина - толщина окантовки тогда если хочеш изменить заливку тебе достаточно перерисовать внутренний квадрат с новым цветом.
А моя проблема что я думаю что есть более красивое решение, просто неможет быть что для того чтобы сделать такую простую вещ надо так "извращаться".

Парни если еще чтото накопаете ответьте пожалуйста.
Если я найду что то потеме то тоже "скину", если комуто интересно.
Всем еще раз спасибо что необделили вниманием.

PS Программер помни что сам был чайником когда то !
  Вверх
fMathEyes
Дата 3.1.2004, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 20.12.2003

Репутация: нет
Всего: нет



проволочный каркас куба использует glaux и что тебе не нравиться?
создал этот каркас а затем куб внутри(как у тебя, наверное) и все!!!

электронную книгу Тарасова почитай!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

http://www.opengl.org.ru
PM MAIL   Вверх
fMathEyes
Дата 3.1.2004, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 20.12.2003

Репутация: нет
Всего: нет



<Spawn>

а почему нельзя GL_QUADS confused.gifconfused.gifconfused.gifconfused.gifconfused.gifconfused.gifconfused.gifconfused.gifconfused.gif
во много раз проще
PM MAIL   Вверх
<Spawn>
Дата 3.1.2004, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: нет
Всего: 64



fMathEyes Ну дак я же написал, что писал на OpenGL всего пару дней! Я же за такой короткий промежуток времени не могу выучить все)))

Это сообщение отредактировал(а) <Spawn> - 3.1.2004, 23:28


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Слово
Дата 7.1.2004, 07:53 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Ха-Ха.
Ну вы тут мля наворотили.
Мне вас жаль. Какие же вы программисты, когда всё время используете стандартные функции?
Программист - человек, который пишет эти стандартные функции САМ, а не использует их.
Дурь, дурь и ещё раз - дурь!!!!!
Короче, делай так:
Код

glColor3f(r, g, b);
glBegin(GL_POLYGON);
glVertex3f(-1, 1, 0);
glVertex3f(1, 1, 0);
glVertex3f(1, -1, 0);
glVertex3f(-1, -1, 0);
glEnd();
glColor3f(0, 0, 1);
glBegin(GL_LINES);
glVertex3f(-1, 1, 0);
glVertex3f(1, 1, 0);
glEnd();

glBegin(GL_LINES);
glVertex3f(1, 1, 0);
glVertex3f(1, -1, 0);
glEnd();

glBegin(GL_LINES);
glVertex3f(1, -1, 0);
glVertex3f(-1, -1, 0);
glEnd();

glBegin(GL_LINES);
glVertex3f(-1, -1, 0);
glVertex3f(-1, 1, 0);
glEnd();


Ну вот, теперь с помощью переменных: r, g, b меняй цвет.

Это сообщение отредактировал(а) Слово - 7.1.2004, 07:55
  Вверх
DENNN
Дата 8.1.2004, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 1
Всего: 43



Кто-то такой крутой програмист, что привел свой код, но на всякий случай вошел под новым ником - очень удобно.
PM ICQ   Вверх
<Spawn>
Дата 8.1.2004, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: нет
Всего: 64



DENNN smile.gif smile.gif smile.gif Пока он будет сам писать свой функции, то к тому времени его прога уже будет не нужна smile.gif


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Magistrus
Дата 3.7.2013, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Жив
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 14.6.2006
Где: г. Одесса

Репутация: нет
Всего: 1



крутой программист не стал бы писать glBegin(GL_LINES) три раза ;)

--------------------
~ вот такая вот загагулина ~ 
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0747 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.