Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту


 
Опции темы

OpenGL вопросы

Непрочитано 29.05.2013, 11:01  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: OpenGL вопросы

Сообщение от tempora Посмотреть сообщение
Уверен, что для запуска OpenGL'ного окружения потребовалось бы больше времени, чем для написания простого GD-ёвого.
Ошибаешься . Вот пример . Пока не мой, но практически все что нужно.
Окромя масштабирования . Весит debug -38 кб + либа фриглута 230 кб/
Release - 10kб.

Код:
#include ‹stdlib.h›
#include ‹time.h›
#include ‹gl/glut.h›

//  constants representing the window size
#define WINDOW_WIDTH 320
#define WINDOW_HEIGHT 240

//  Initialization
void init ();

//  Callback functions
void display (void);
void mouse (int button, int state, int x, int y);
void keyboard (unsigned char key, int x, int y);

//  Support Functions
void centerOnScreen ();

//  define the window position on screen
int window_x;
int window_y;

//  variable representing the window title
char *window_title = "Image Generator";

//  Tells whether to display the window full screen or not
//  Press Alt + Esc to exit a full screen.
int full_screen = 0;

//  Generates a random image...
void generateImage ();

//  Represents the pixel buffer in memory
GLubyte buffer[WINDOW_WIDTH][WINDOW_HEIGHT][3];

//-------------------------------------------------------------------------
//  Set OpenGL program initial state.
//-------------------------------------------------------------------------
void init ()
{
	glClearColor (0.0, 0.0, 0.0, 0.0);
	glShadeModel(GL_FLAT);
	glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
	srand (time(NULL));
    generateImage();
}

//-------------------------------------------------------------------------
//  This function is passed to glutDisplayFunc in order to display
//	OpenGL contents on the window.
//-------------------------------------------------------------------------
void display (void)
{
	glClear(GL_COLOR_BUFFER_BIT);
	glDrawPixels(WINDOW_WIDTH, WINDOW_HEIGHT, GL_RGB,
					GL_UNSIGNED_BYTE, buffer);
	glutSwapBuffers ();
}

//-------------------------------------------------------------------------
//  This function is passed to the glutMouseFunc and is called
//  whenever the mouse is clicked.
//-------------------------------------------------------------------------
void mouse (int button, int state, int x, int y)
{
	if (state == GLUT_DOWN)
	{
		generateImage ();
		glutPostRedisplay ();
	}
}

//-------------------------------------------------------------------------
//  This function is passed to the glutKeyboardFunc and is called
//  whenever the user hits a key.
//-------------------------------------------------------------------------
void keyboard (unsigned char key, int x, int y)
{
	switch (key)
	{
		case 'g':
			generateImage ();
			glutPostRedisplay ();
			break;
		case 27:
			exit (0);
	}
}

//-------------------------------------------------------------------------
//  This function sets the window x and y coordinates
//  such that the window becomes centered
//-------------------------------------------------------------------------
void centerOnScreen ()
{
	window_x = (glutGet (GLUT_SCREEN_WIDTH) - WINDOW_WIDTH)/2;
	window_y = (glutGet (GLUT_SCREEN_HEIGHT) - WINDOW_HEIGHT)/2;
}

//-------------------------------------------------------------------------
//  Generate new image with random colors
//-------------------------------------------------------------------------
void generateImage ()
{
    int i, j;

    for (i = 0; i ‹ WINDOW_WIDTH; i++)
    {
        for (j = 0; j ‹ WINDOW_HEIGHT; j++)
        {
            buffer[i][j][0] = (GLubyte) (rand () % 256);
            buffer[i][j][1] = (GLubyte) (rand () % 256);
            buffer[i][j][2] = (GLubyte) (rand () % 256);
        }
    }
}

//-------------------------------------------------------------------------
//  Program Main method.
//-------------------------------------------------------------------------
void main (int argc, char **argv)
{
	//  Connect to the windowing system
	glutInit(&argc, argv);

	//  create a window with the specified dimensions
	glutInitWindowSize (WINDOW_WIDTH, WINDOW_HEIGHT);

	//  Set the window x and y coordinates such that the
	//  window becomes centered
	centerOnScreen ();

	//  Position Window
	glutInitWindowPosition (window_x, window_y);

	//  Set Display mode
	glutInitDisplayMode (GLUT_RGB | GLUT_DOUBLE);

	//  Create window with the specified title
	glutCreateWindow (window_title);

	//  View in full screen if the full_screen flag is on
	if (full_screen)
		glutFullScreen ();

	//  Set OpenGL program initial state.
	init();

	// Set the callback functions
	glutDisplayFunc (display);
    glutKeyboardFunc (keyboard);
    glutMouseFunc (mouse);

	//  Start GLUT event processing loop
	glutMainLoop();
}
Миниатюры:
Нажмите на изображение для увеличения
Название: 2013-05-29_110004.png
Просмотров: 44
Размер:	239.2 Кб
ID:	47329  
Реклама:
__________________
Осторожно , злой кот

Последний раз редактировалось dosikus; 29.05.2013 в 11:28.
dosikus вне форума  
Непрочитано 29.05.2013, 11:35  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: OpenGL вопросы

minGW в составе CodeBlocks . Правленый шаблон под glut .
Здесь конечно надобно посмотреть - как у него с дабагом .
Кстати кто что насоветует на эту тему ?
В чем дебажить лучше ?
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 29.05.2013, 19:50  
tempora
Почётный гражданин KAZUS.RUN
 
Регистрация: 10.01.2007
Сообщений: 3,411
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: OpenGL вопросы

Сообщение от dosikus Посмотреть сообщение
Ошибаешься. Вот пример.
Сразу предупрежу - я не спорю, так как твоего интереса к OpenGL'ю уже достаточно, чтобы остановить свой выбор на поиске решения именно в этом направлении, но всё же...
интересно, как это ты решил, что X меньше Y, зная значение только X ... а?

Если бы интерес был только в том, чтобы отлаживать на ПиСе алгоритмы формирования дисплейного буфера, перед их зашиванием в кристалл, то достаточно было бы освоить (а скорее всего - просто вспомнить) команды текстового редактора, чтобы сразу же и приступить к тестированию. То есть, никаких либ, никакого API - "сразу в бой", или, по-ихнему - "up and run".

И только из-за твоего отдельного интереса к OpenGL'ю я перестал рекомендовать это решение.
__________________
There's always more than one way to skin a cat.
tempora вне форума  
Непрочитано 29.05.2013, 19:59  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

Сообщение от tempora Посмотреть сообщение
Если бы интерес был только в том, чтобы отлаживать на ПиСе алгоритмы формирования дисплейного буфера,
Ну допустим , что я не только openGL пробовал и буду пробовать. И уж обвязка и манипуляции с созданием проекта /установкой IDE и т.д. и т.п. НЕ ТОЛЬКО OPENGL мне известны . Пока все не в пользу остальных.
И я же не озвучил что остановлюсь на этом варианте окончательно.
Кусок кода что я привел, тем более не все что нужно в итоге. Я думал что ты поймешь. Имелось ввиду - все что нужно для дальнейшей работы .

Кстати , а что ты все хочешь предложить ? Только не QT и подобное ...

Сообщение от tempora Посмотреть сообщение
то достаточно было бы освоить (а скорее всего - просто вспомнить) команды текстового редактора, чтобы сразу же и приступить к тестированию. То есть, никаких либ, никакого API - "сразу в бой", или, по-ихнему - "up and run".
Это не осознал полностью . Ты о чем счас ? Колись .
__________________
Осторожно , злой кот

Последний раз редактировалось dosikus; 29.05.2013 в 20:18.
dosikus вне форума  
Непрочитано 29.05.2013, 20:58  
tempora
Почётный гражданин KAZUS.RUN
 
Регистрация: 10.01.2007
Сообщений: 3,411
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: OpenGL вопросы

Сообщение от dosikus Посмотреть сообщение
Я думал что ты поймешь.
По такому куцему "описанию" поймёшь, как же.

Сообщение от dosikus Посмотреть сообщение
Ты о чем счас? Колись.
Отписал в личку.
__________________
There's always more than one way to skin a cat.
tempora вне форума  
Непрочитано 02.06.2013, 19:36  
drug2004
Частый гость
 
Регистрация: 30.01.2009
Сообщений: 14
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
drug2004 на пути к лучшему
По умолчанию Re: OpenGL вопросы

Сообщение от dosikus Посмотреть сообщение
minGW в составе CodeBlocks . Правленый шаблон под glut .
Здесь конечно надобно посмотреть - как у него с дабагом .
Кстати кто что насоветует на эту тему ?
В чем дебажить лучше ?
Лично я дебажу диагностическими сообщениями (printf), поэтому ничего не посоветую. Дебаггер вещь удобная, но не всегда применимая - сетевые приложения, многопоточные ему не по зубам обычно. Хотя может я не умею их готовить просто.
drug2004 вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопросы по радиоприемнику Alpout Делимся опытом 8 19.01.2013 10:53
Wiznet W7100. Общие вопросы R_N Микроконтроллеры, АЦП, память и т.д 7 06.06.2012 00:33
Система измерения температуры (на AD8495), вопросы по схеме и реализации spartakchamp Измерительное оборудование 2 15.11.2010 22:04
Протокол modbus. Вопросы по интерфейсу Phunt-ik Микроконтроллеры, АЦП, память и т.д 32 25.12.2008 00:56


Часовой пояс GMT +4, время: 03:35.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.