Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 05.01.2013
Сообщений: 13
1

Вывод трёхмерной графики без окна

16.02.2013, 21:24. Показов 2309. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Осваивая OpenGL столкнулся с потребностью вывода изображения напрямую на экран, без использования видимого окна. Долго искал в интернете информацию, но ничего особенно вразумительного не нашёл. Те варианты которые есть, настолько тормознутые, что даже учитывая небольшие размеры выводимого изображения, довольно сильно загружают ЦП.
Мне, фактически не важно, как выводить, поверх значков или за ними. Главное - обеспечить передвижение изображения, размером порядка 300х300 пикселей, по всему экрану. А также исключить случайные манипуляции пользователя с окном.
Прошу не более, чем подсказать возможные пути для полноценного решения, при котором программа сможет без помех функционировать, не мешая при этом стабильной работе. Хоть с невидимым окном, хоть с выводом за его пределы (в возможности чего я глубоко сомневаюсь).
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.02.2013, 21:24
Ответы с готовыми решениями:

Оптимизация трехмерной графики
Здравствуйте уважаемые форумчане! Помогите пожалуйста с моей проблемой. Уже не одну неделю...

Реализация трехмерной графики
Всем привет. Очень интересует возможность и механизм реализации трехмерной графики от примитивной...

Обработка трехмерной графики
Практическое задание 1. Изучить теорию обработки трехмерной графики. 2. Ввести вектор V с...

Графики трехмерной функции
Столкнулся с проблемой. С одной стороны она простая, но есть подводные камни. Есть массив с...

12
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
16.02.2013, 22:32 2
Для windows приложения через функцию CreateDC(DISPLAY,NULL,NULL,NULL) можно получить контекст экрана и рисовать, соответственно, прямо на экран.
Кроме того, OpenGL тоже имеет режим вывода на весь экран.
0
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,493
Записей в блоге: 1
16.02.2013, 22:56 3
не понял, тебе на рабочем столе рисовать нужно или просто полноэкранное приложение пишешь?
Полноэкранное приложение демонстрируется, например в уроках от NeHe начиная с первого урока.
0
0 / 0 / 0
Регистрация: 05.01.2013
Сообщений: 13
17.02.2013, 09:09  [ТС] 4
Да в том-то и дело, мне нужно чтоб вывод происходил в невидимом окне или, как я уже сказал за его пределами. То есть, изображение выдаётся в определённую область экрана без элементов окна и при этом позволяет одновременно с этим продолжать работать с другими приложениями. Ну я помню ещё в 2000-х годах такие приколы по компьютерам ходили. Где какой-нибудь персонаж в углу экрана торчал.
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
17.02.2013, 11:38 5
Вот пример рисования на экране из диалогового окна.
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
36
37
38
39
40
41
42
43
44
#include <windows.h>
#include "resource.h"
int x=0,dx=10;
const int R=20;
int WINAPI fn(HWND hwnd,int cmd,WPARAM wp,LPARAM lp)
{
    switch(cmd)
    {
 
    case WM_INITDIALOG:
        ShowWindow(hwnd,SW_MINIMIZE);// сворачиваем окно
        SetTimer(hwnd,1,25,NULL);// запускаем таймер
        return 1;
    case WM_TIMER:
        {
            HDC hdcscr=CreateDC("DISPLAY",NULL,NULL,NULL);// контекст экрана
            int w=GetDeviceCaps(hdcscr,HORZRES);// ширина экрана
            int h=GetDeviceCaps(hdcscr,VERTRES);// высота экрана
            x+=dx;// пересчитываем координаты движущегося объекта
            if(x>=w/2+100){x=w/2+100;dx=-abs(dx);}
            if(x<=w/2-100){x=w/2-100;dx=abs(dx);}
            Ellipse(hdcscr,x-R,h/2-R,x+R,h/2+R);// рисуем 
            DeleteDC(hdcscr);// удаляем контекст
            return 1;
        }
    case WM_CLOSE:
        EndDialog(hwnd,3);// закрытие приложения, можно alt+F4
        return 1;
    case WM_COMMAND:
        return 0;// обрабатываемых кнопок и меню нет
    case WM_PAINT:
        {
            PAINTSTRUCT ps;
            BeginPaint(hwnd, &ps);// в окне ничего не рисуем
            EndPaint(hwnd, &ps);
            return 1;
        }
    }
    return 0;
}
int WINAPI WinMain(HINSTANCE hi,HINSTANCE,LPSTR,int) 
{
    return DialogBox(hi,"SIMPLE",NULL,(DLGPROC)fn); // открыть диалоговое окно, образец которого называется "SIMPLE"
}
0
96 / 96 / 21
Регистрация: 25.04.2012
Сообщений: 449
17.02.2013, 13:09 6
насколько я понял топикстартеру нужно что-то вроде заставок из вин2к\хп, где шарики прыгают по верх рабочего стола, или фигуры летают?
0
0 / 0 / 0
Регистрация: 05.01.2013
Сообщений: 13
17.02.2013, 13:32  [ТС] 7
Фактически - да, но чтоб вместе с этим оставалась возможность взаимодействовать с другими программами.
Предыдущий пример, кстати, не работает, ибо я не использую Майкрософт Визуал.
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
17.02.2013, 13:37 8
Цитата Сообщение от Jeka777 Посмотреть сообщение
я не использую Майкрософт Визуал
А как же Вы осваиваете OpenGL без MS Visual?
0
0 / 0 / 0
Регистрация: 05.01.2013
Сообщений: 13
17.02.2013, 13:41  [ТС] 9
Ну вот так и осваиваю. Пока не пишу ничего крупного, поэтому достаточно даже Dev C++. И это меня сейчас вполне устраивает.
0
0 / 0 / 0
Регистрация: 05.01.2013
Сообщений: 13
18.02.2013, 14:06  [ТС] 10
Извиняюсь за то, что поднимаю тему. Но ответа я так и не нашёл. Может кто-нибудь всё же поможет?
0
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,493
Записей в блоге: 1
18.02.2013, 21:48 11
http://pmg.org.ru/nehe/nehe01.htm
http://nehe.gamedev.net/tutori... 32)/13001/
0
0 / 0 / 0
Регистрация: 05.01.2013
Сообщений: 13
18.02.2013, 21:52  [ТС] 12
Один вопрос, что вы хотите этим сказать? Лично я все уроки от НеХе уже закончил.
Да, в заголовке темы я объяснил кривовато, но походу объяснения вроде бы всё уже пояснил. Мне надо чтоб изображение двигалось поверх экрана с открытыми приложениями, аки, если не ошибаюсь, по принципу оверлея в ДиркетИксе.
0
0 / 0 / 0
Регистрация: 04.04.2013
Сообщений: 10
04.04.2013, 11:31 13
Извиняюсь за поднятие старой темы, Но присоединяюсь к топикстартеру.
Нужна программа создающая графический объект без стандартного окна Windows.
В качестве примера - программа Ruler из демопримеров для Java.

http://hg.openjdk.java.net/jdk... Ruler.java

ZSS Я сейчас пытаюсь запустить ваш код на microsoft visual studio 2008. Ругается на resource.h. Погуглил, скачал 2 версии. Не подходят (выходит ошибка линкера) Не посоветуете среду или линк где скачать?

Ну и, не сочтите за наглость, есть ли аналогичные функции для X Windows
0
04.04.2013, 11:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.04.2013, 11:31
Помогаю со студенческими работами здесь

Для игры требуется аппаратное ускорение трехмерной графики
запускаю игру и: Для игры требуется аппаратное ускорение трехмерной графики это какая программа?

Вывод графики напрямую без посредников...
Собственно сабж... Вообще меня OpenGL всегда устраивал (имхо лучший вариант для делфи, благо...

Выбор редактора трёхмерной графики (3ds Max или Maya)
Подскажите пожалуйста, что лучше 3ds Max или Maya и что будет лучше для новичка.

С какой версии DirectX лучше всего начать освоение трёхмерной графики?
Всем привет. В универе проходим курс С++ программирования и т.к. меня с детства увлекала сама идёя...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru