Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
Jeka777
0 / 0 / 0
Регистрация: 05.01.2013
Сообщений: 13
#1

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

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

Осваивая OpenGL столкнулся с потребностью вывода изображения напрямую на экран, без использования видимого окна. Долго искал в интернете информацию, но ничего особенно вразумительного не нашёл. Те варианты которые есть, настолько тормознутые, что даже учитывая небольшие размеры выводимого изображения, довольно сильно загружают ЦП.
Мне, фактически не важно, как выводить, поверх значков или за ними. Главное - обеспечить передвижение изображения, размером порядка 300х300 пикселей, по всему экрану. А также исключить случайные манипуляции пользователя с окном.
Прошу не более, чем подсказать возможные пути для полноценного решения, при котором программа сможет без помех функционировать, не мешая при этом стабильной работе. Хоть с невидимым окном, хоть с выводом за его пределы (в возможности чего я глубоко сомневаюсь).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.02.2013, 21:24
Ответы с готовыми решениями:

Вывод графики в OpenGL
Возможно ли в OpenGL выводить картинку или даже фотографию, в форматах jpeg,...

Вывод текста и графики
Помогите пожалуйст: Написать, с использованием функций API, программу,...

Вывод числа в столбик с первой цифры, без массива, без строк
#include <iostream> #include <math.h> using namespace std; void p(long a) {...

Программирование движка для трёхмерной игры
Ребята,нужна помощь. Решил писать игру и понял,что нужен движок. В интернете...

Вывод на монитор графики, не используя WinAPI
Каким образом можно осуществлять работу с графикой и мультимедиа, не используя...

12
zss
Модератор
Эксперт С++
7060 / 6605 / 4179
Регистрация: 18.12.2011
Сообщений: 17,405
Завершенные тесты: 1
16.02.2013, 22:32 #2
Для windows приложения через функцию CreateDC(DISPLAY,NULL,NULL,NULL) можно получить контекст экрана и рисовать, соответственно, прямо на экран.
Кроме того, OpenGL тоже имеет режим вывода на весь экран.
0
Kuzia domovenok
2261 / 2030 / 459
Регистрация: 25.03.2012
Сообщений: 7,173
Записей в блоге: 1
16.02.2013, 22:56 #3
не понял, тебе на рабочем столе рисовать нужно или просто полноэкранное приложение пишешь?
Полноэкранное приложение демонстрируется, например в уроках от NeHe начиная с первого урока.
0
Jeka777
0 / 0 / 0
Регистрация: 05.01.2013
Сообщений: 13
17.02.2013, 09:09  [ТС] #4
Да в том-то и дело, мне нужно чтоб вывод происходил в невидимом окне или, как я уже сказал за его пределами. То есть, изображение выдаётся в определённую область экрана без элементов окна и при этом позволяет одновременно с этим продолжать работать с другими приложениями. Ну я помню ещё в 2000-х годах такие приколы по компьютерам ходили. Где какой-нибудь персонаж в углу экрана торчал.
0
zss
Модератор
Эксперт С++
7060 / 6605 / 4179
Регистрация: 18.12.2011
Сообщений: 17,405
Завершенные тесты: 1
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
Tiva
94 / 94 / 21
Регистрация: 25.04.2012
Сообщений: 429
17.02.2013, 13:09 #6
насколько я понял топикстартеру нужно что-то вроде заставок из вин2к\хп, где шарики прыгают по верх рабочего стола, или фигуры летают?
0
Jeka777
0 / 0 / 0
Регистрация: 05.01.2013
Сообщений: 13
17.02.2013, 13:32  [ТС] #7
Фактически - да, но чтоб вместе с этим оставалась возможность взаимодействовать с другими программами.
Предыдущий пример, кстати, не работает, ибо я не использую Майкрософт Визуал.
0
zss
Модератор
Эксперт С++
7060 / 6605 / 4179
Регистрация: 18.12.2011
Сообщений: 17,405
Завершенные тесты: 1
17.02.2013, 13:37 #8
Цитата Сообщение от Jeka777 Посмотреть сообщение
я не использую Майкрософт Визуал
А как же Вы осваиваете OpenGL без MS Visual?
0
Jeka777
0 / 0 / 0
Регистрация: 05.01.2013
Сообщений: 13
17.02.2013, 13:41  [ТС] #9
Ну вот так и осваиваю. Пока не пишу ничего крупного, поэтому достаточно даже Dev C++. И это меня сейчас вполне устраивает.
0
Jeka777
0 / 0 / 0
Регистрация: 05.01.2013
Сообщений: 13
18.02.2013, 14:06  [ТС] #10
Извиняюсь за то, что поднимаю тему. Но ответа я так и не нашёл. Может кто-нибудь всё же поможет?
0
Kuzia domovenok
2261 / 2030 / 459
Регистрация: 25.03.2012
Сообщений: 7,173
Записей в блоге: 1
18.02.2013, 21:48 #11
http://pmg.org.ru/nehe/nehe01.htm
http://nehe.gamedev.net/tutorial/cre...(win32)/13001/
0
Jeka777
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/jdk7/jdk7...ler/Ruler.java

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

Ну и, не сочтите за наглость, есть ли аналогичные функции для X Windows
0
04.04.2013, 11:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.04.2013, 11:31

Каким образом лучше осуществить вывод массива с помощью графики?
Добрый день! Имеется массив размера примерно 1000 на 500. Некоторые ячейки...

Создание окна без WinAPI
Хотелось узнать, как создавать окна без использования WinAPI.

Запуск программы без окна (фоновый режим)
Всем привет, помогите сделать так , чтобы программа запускалась без окна...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

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