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

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

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

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

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

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


 
Опции темы
Непрочитано 29.05.2013, 11:01  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
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
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: OpenGL вопросы

minGW в составе CodeBlocks . Правленый шаблон под glut .
Здесь конечно надобно посмотреть - как у него с дабагом .
Кстати кто что насоветует на эту тему ?
В чем дебажить лучше ?
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 29.05.2013, 19:50  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 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
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
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.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 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, время: 05:50.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot