今天OpenGL问题

【OpenGL】关于OpenGL中Bind函数的理解 在OpenGL中,总是会遇到类似下面的绑定语句: glBindTexture(GL_TEXTURE_2D, renderTex); glBindFramebuffer(GL_FRAMEBUFFER, fboHandle); glBindRenderbuffer(GL_RENDERBUFFER, depthBuf); …… 一直都不是很明白这是什么意思,它们到底是绑定什么到什么上呢?绑定了又怎么 阅读详情

今天准备回到windows上继续学习OpenGL, 结果不知道是因为在虚拟机的原因还是因为其他的,一个基本的OpenGL框架竟然卡,而且关闭按钮不接收消息,先把代码贴上来,回去在windows上实验一下:

#include <windows.h>

#include <gl/gl.h>

#include <gl/glu.h>



#pragma comment(lib, "opengl32.lib")

#pragma comment(lib, "glu32.lib")





#define GLTEST_CLASS		"GLTest.Window"

#define WND_W				800

#define WND_H				600

#define FPS					30





static HINSTANCE G_hinst = NULL;

static HWND		G_hwnd = NULL;

static HDC		G_hdc = NULL;

static HGLRC	G_hrc = NULL;





static PIXELFORMATDESCRIPTOR S_pfd = {

		sizeof(PIXELFORMATDESCRIPTOR),	

		1,									

		PFD_DRAW_TO_WINDOW |				

		PFD_SUPPORT_OPENGL |				

		PFD_DOUBLEBUFFER,					

		PFD_TYPE_RGBA,						

		0,									

		0, 0, 0, 0, 0, 0,					

		0,									

		0,									

		0,									

		0, 0, 0, 0,							

		16,									

		0,									

		0,									

		PFD_MAIN_PLANE,						

		0,									

		0, 0, 0								



};



void InitGL();

void ReshapeGL(int w, int h);

void DisplayGL();





static LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)

{



	switch ( msg ) {

	case WM_PAINT:

		DisplayGL();

		break;

	case WM_SIZE:

		ReshapeGL(LOWORD(lparam), HIWORD(lparam));

		break;

	case WM_CLOSE:

		PostQuitMessage(0);

		break;

	default:

		return DefWindowProc(hwnd, msg, wparam, lparam);

	}



	return 0;

}







int CreateGLWindow(const char *title, int w, int h)

{

	WNDCLASS wc;

	DWORD wnd_style_ex, wnd_style;

	RECT wnd_rect;

	int pf;

	

	G_hinst = GetModuleHandle(NULL);



	wnd_rect.left = 0;

	wnd_rect.top = 0;

	wnd_rect.right = w;

	wnd_rect.bottom = h;

	

	wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;

	wc.lpfnWndProc = (WNDPROC)WndProc;

	wc.cbClsExtra = 0;

	wc.cbWndExtra = 0;

	wc.hInstance = G_hinst;

	wc.hIcon = LoadIcon(NULL, IDI_WINLOGO);

	wc.hCursor = LoadCursor(NULL, IDC_ARROW);

	wc.hbrBackground = NULL;

	wc.lpszMenuName = NULL;

	wc.lpszClassName = GLTEST_CLASS;

	if ( !RegisterClass(&wc) )

		return 0;

	

	wnd_style_ex = WS_EX_APPWINDOW | WS_EX_WINDOWEDGE;

	wnd_style = WS_OVERLAPPEDWINDOW;

	AdjustWindowRectEx(&wnd_rect, wnd_style, 0, wnd_style_ex);



	G_hwnd = CreateWindowEx(wnd_style_ex, 

					GLTEST_CLASS, 

					title, 

					wnd_style, 

					0, 0,

					wnd_rect.right-wnd_rect.left, wnd_rect.bottom-wnd_rect.top,

					NULL, NULL, G_hinst, NULL);

	

	G_hdc = GetDC(G_hwnd);

	S_pfd.cColorBits = GetDeviceCaps(NULL, BITSPIXEL);

	if ( !(pf = ChoosePixelFormat(G_hdc, &S_pfd)) ) 

		return 0;

	

	if ( !SetPixelFormat(G_hdc, pf, &S_pfd) )

		return 0;



	G_hrc = wglCreateContext(G_hdc);

	if ( !G_hrc ) 

		return 0;



	if ( !wglMakeCurrent(G_hdc, G_hrc) )

		return 0;



	ShowWindow(G_hwnd,SW_SHOW);

	ReshapeGL(w, h);

	InitGL();



	return 1;

}



void ReleaseGLWindow()

{

	wglMakeCurrent(NULL, NULL);

	wglDeleteContext(G_hrc);

	ReleaseDC(G_hwnd, G_hdc);

	DestroyWindow(G_hwnd);

	UnregisterClass(GLTEST_CLASS, G_hinst);

}





void InitGL()

{

	glEnable(GL_TEXTURE_2D);

	glShadeModel(GL_SMOOTH);

	glClearColor(0.0f, 0.0f, 0.0f, 0.0f);

	glClearDepth(1.0f);

	glEnable(GL_DEPTH_TEST);

	glDepthFunc(GL_LEQUAL);

	glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);

}



void ReshapeGL(int w, int h)

{

	glViewport(0, 0, w, h);

	glMatrixMode(GL_PROJECTION);

	glLoadIdentity();

	gluOrtho2D(0.0f, (GLfloat)w, 0.0f, (GLfloat)h);

	glMatrixMode(GL_MODELVIEW);

	glLoadIdentity();

}





void DisplayGL()

{

	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

	SwapBuffers(G_hdc);

}





int WINAPI 

WinMain(HINSTANCE hInstance,

		HINSTANCE hPrevInstance,

		LPSTR lpCmdLine,

		int nCmdShow)

{

	MSG msg;

	DWORD intval = 1000 / FPS;



	CreateGLWindow("GLTest", WND_W, WND_H);



	for ( ;; ) {

		if ( PeekMessage(&msg, G_hwnd, 0, 0, PM_REMOVE) ) {

			if ( WM_QUIT == msg.message )

				break;

			else {

				TranslateMessage(&msg);

				DispatchMessage(&msg);

			}

		}

		DisplayGL();

		Sleep(intval);

	}



	ReleaseGLWindow();



	return 0;

}



在win32上用wgl折腾OpenGL 3.3等高版本OpenGL 用GLFW+GLAD库已经好一段时间了。但是我还是觉得GLFW不如原生的win32窗口用着顺手,毕竟win32窗口可以自绘加控件等等,可玩性可谓是很高的。 微软给OpenGL留了套东西,不过可惜,哪怕到了Windows 10,这套API都停留在OpenGL 1.x时代。甚至还是用的CPU渲染。新版本的API藏在显卡开发商提供的程序中,我们需要拿到这些API。 说到这里应该你就熟悉了,这些API有一个库可以帮忙——GLAD。而GLAD通过一个回调来拿到这些函数的地址,这个函数类型(我还是愿意给函数一个类型 阅读详情

相关推荐

解决安装OpenGL时程序运行提示glut32.dll丢失的问题

很多同学都出现了一个问题,在按照教程配置好OpenGL后运行测试程序,编译通过,但运行时出现”计算机丢失glut32.dll文件“,可C:\WINDOWS\system 32中有这个文件。

Sophia_Deng的专栏 9017

翻译openGL的FAQ--可视和转换

原文参考点是http://www.opengl.org/wiki/index.php/Viewing_and_Transformations 内容:观察和转换----------------------------------------------------------------------------------01.相机如何在OpenGL中工作?02.我怎样才可以移动我的视点, 或者

杨德龙的专栏 1890

VirtualLab初学者教程-1.用户界面

目录前言一、VirtualLab Fusion简介1.软件2.内置工具箱:二、用户界面认识1.上方菜单栏2.右侧面主窗口3.底部窗口附 前言 感觉做VirtualLab的资料不是特别多,可能用的朋友也比较少吧,笔者最近也因为大创需要刚刚开始入门,把网上有的英文资料整理了一下,加了一点自己的内容发出来希望帮助更多在学习中的朋友,有用词不当之处还请多多包涵。 一、VirtualLab Fusion简介 因为是第一讲,简单啰嗦一下软件本身,参考官方介绍。 1.软件 VirtualLab是由德国LightTran

ClaireTang1的博客 2万+

OpenGL FAQ

OpenGL FAQ (2002/04/03) http://mays.6to23.com http://mays.yeah.net http://cgd.gamedoor.net http://cgd.pages.com.cn/cvbb/ 参与者:NewCyber3D.com、LangFox、mays、xnp、Qian Jingping 问:我想看英文常见问题解答,有没有?...

weixin_30552635的博客 364

中兴OLT配置实战:从零开始,手把手教你完成一个HGU的完整业务开通(含DBA模板、限速与远程升级)

本文详细介绍了中兴OLT配置实战,从零开始手把手教你完成HGU的完整业务开通,包括DBA模板设计、限速与远程升级等关键步骤。通过实际案例和详细命令,帮助工程师快速掌握GPON网络配置技巧,提升运维效率。

weixin_30599769的博客 349

合规批量下载美国上市公司年报数据的一些经验和总结

本文总结了使用Python脚本批量下载和处理美国上市公司SEC报告的技术经验。通过CIK代码查询SEC EDGAR系统,生成特定日期和报告类型的URL,并使用Selenium和Requests库下载报告内容。流程包括数据获取、文件下载、Excel处理和多线程优化,确保高效处理几百条数据。关键技术挑战包括SEC访问限制、动态网页内容和数据完整性,解决方案包括设置合规的User-Agent、使用Selenium模拟浏览器行为以及错误日志记录。最佳实践包括模块化设计、多线程优化和严格遵守SEC合规性。该自动化流程

jyfool的博客 1636

opengl驱动支持但不能运行_OpenGL 开发环境配置 Visual Studio + GLFW + GLAD

OpenGL环境配置一般选择Win32,因此本教程将搭载Win32平台的开发环境。 目录搭建环境操作系统:Windows 10编译器:Visual Studio 2017GLAD库GLFW库配置步骤Step1. 下载编译好的GLFW库下载链接:https://www.glfw.org/download.html.下载选择的版本Step2. 下载GLAD库GLAD是一个开源的库,它能解决我们上面提到...

weixin_39773447的博客 1181

Odoo 集成ReportBro报表设计器支持13,14,15,16,17,18,19

Odoo 集成ReportBro零代码报表设计器,ReportBro设计器 一个用于创建PDF和XLSX报告模板的javascript插件。

zxltwins的博客 3377

opengl驱动支持但不能运行_【彻底解决】3DMAX显示驱动问题

3DMAX从入门到精通(全套)【沐风老师】-学习视频教程-培训课程-腾讯课堂​ke.qq.com问题描述:1.3DMAX启动弹出这样的界面:2.主工具栏按钮不显示,或者鼠标移上去才显示(刷新问题)。3.视口菜单不显示或显示不全。问题分析:首先,应该考虑的是显卡驱动有没有安装或者有没有成功安装。尤其是新装系统之后。其次,如果显卡驱动安装没有问题,那么问题一般出在显卡型号与3DMAX的兼容性上,解决办...

weixin_39692045的博客 3015

MC33PT2000控制详解一:PT2000 Dev Studio工具的使用

MC33PT2000共可控制6个高低端(如控制6个高压喷油器),1个高低端(如控制高压油泵)和DC-DC模块(如升压到65V).

m0_69929716的博客 1355

Qt C++ 的虚拟演播室系统

**数据流转**:OpenCV 处理的图像格式通常是 `cv::Mat`,而 Qt 3D 渲染需要 `QImage` 或 `QTexture2D`。// 临时用颜色代替。// 前景在背景前面。#### 3.3 主窗口与 Qt 3D 集成 (`mainwindow.h` / `.cpp` / `.ui`)* **更复杂的 3D 场景**:加载 3D 模型(.obj, .gltf 等)作为背景和道具。1. **构建项目**:确保 `.pro` 文件中的 OpenCV 路径配置正确,然后构建项目。

寒寒豆豆软件公司的博客 112

使用OpenGL的深度测试遇到始终无效的情况

最近在看大神写的OpenGL教程,结果在显示地球和太阳之间的相对关系时,深度测试效果始终出不来,后来在优快云的另外一篇帖子给了我灵感原来就是在初始化的时候没有申请深度缓冲区

burning_ice的博客 2208

京东豆自动领取脚本配置教程

腾讯云/阿里云服务器(Docker环境):全自动跑脚本领京豆(无需本地代理,使用加速源)

AIOT魔法师 860

今天遇到了很弱智的OpenGL的问题

在学习Nehe教程的过程中,我今天遇到了很白痴的问题。。。 就是程序运行之后居然

sherry要努力学习编程的专栏 739

互联网人提高效率必备软件合集

很多的时候我们解决不了问题,只是因为没有找到对的工具,实际上,很多好的工具就在那里,只是你不用而已。这点上,信息壁垒是一个很大的原因,因此我希望兄伙伴们多出去走走,不要只是局限在一个圈层;

zhonglunshun的专栏 3484

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

android opengl 闪退,最近老是闪退,用OpenGL勉强不闪退,今天又有新问题了...

该楼层疑似违规已被系统折叠隐藏此楼查看此楼看了log,00:15:25.242 : [model] Model geometry '/vehicle/ai/transporter_t6/ai.pmg' has incorrect file version 506d6714 - expected version 506d6715. Converting...00:15:25.265 : [mo...

weixin_26857669的博客 421

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

OpenGL(二)——OpenGL图形绘制

上一篇我们介绍了什么是OpenGL,接下来,我们就开始用OpenGL实现简单的开发之旅吧。 大纲 今天将围绕以下几个环节,进行OpenGL的开发学习。 Xcode环境搭建 view的绘制之三角形绘制 好了,开始愉快的编程之旅吧,首先搭建开发环境。 一:Xcode环境搭建 GLFW编译: 1.下载GLFW的源码 —- GLWF用于创建OpenGL的Context,及创建显示窗口 2....

hirezy 4259

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

OpenGL中的线程问题

用OpenGL做交互的时候,总需要处理点击事件吧。结果今天在处理点击事件的时候,遇到一个问题。当点击事件触发openGL的函数时返回的handle都是0。原以为资源没有释放,但是改变代码结构之后发现不是这个问题。仔细看log后发现了一句话: call to OpenGL ES API with no current context (logged once per thread) 上网查查原因

jiaoyang623的专栏 1万+

glew glfw opengl 之间的关系

glew glfw 搭建opengl 环境时遇到的一些问题记录 windows  即使完全正确配置了 glfw glew 头文件,lib 文件,dll文件后,依然无法调用 gl 相关函数,如glViewport() 一旦调用就会报 gl 函数链接错误  原因: win32 下必须 link opengl32.lib. 起初我误以为 glew.lib 只要链接好,就可以 调用

杂七杂八 1万+

android opengl旋转,OpenGL纹理旋转及翻转问题详解

大家好,我是程序员kenney,今天给大家讲解一下Android上OpenGL开发可能会遇到的一些纹理旋转及翻转的问题,其中有些原理在其它平台上如ios,osx上也是类似的。纹理旋转的问题一定要搞清楚,不能每当碰到一个方向不对的就自己旋转一下把它转正而不去研究背后的原因,这样虽然这一步旋转正确了,但之后的处理步骤可能都是建立在错误的认知上进行的,容易错上加错。我们先来了解一下几个坐标系首先看下图片...

weixin_36353849的博客 2265

【OpenGL】VS2019使用QtOpenGL遇到LNK2019报错问题解决

OpenGL报错解决

weixin_38120390的博客 981

OpenGl 踩坑 问题 绘制图形显示不出来

今天在学习OpenGl 的时候 准备用ndk 做绘制开发。然后在c++ 中 写了一个shader 是这样的 const char *vertex = "attribute vec4 v_position;\n" "\n" "void main(){\n" " gl_Position = v_position;\n" "}"; con

天行健,君子以自强不息。 5987

解决Visual studio中OpenGL环境的重复配置问题

  之所以写这篇博客,是因为今天中午我醒来的时候,突然有一个妹妹来找我探讨关于CPT205的问题。   有CPT205的同学可能都发现了这个问题,那就是OpenGL每次都要重新配置,不然就没法正常跑代码。但是配置的过程又很繁琐,时隔一周没有动过VS,可能会遗忘,又要去查之前的lab文件,非常麻烦。   那么,有没有一个简单的方法可以让我们轻松的完成环境的配置呢?   当然有啦!   首先,打开一个VS项目,在Solultion Explorer中点击Property Manager。   

weixin_45410343的博客 1921

【OpenGL】窗口的创建

从今天开始我们开始学习OpenGL,从0开始,当然是有C++基础的前提

笔记 1675

【二】VS2017使用QCustomPlot开启OpenGL加速

上一章节介绍了VS2017下使用QCustomPlot画图插件的安装配置以及过程中所遇到的问题,今天来说一下如何为QCustomPlot开启OpenGL硬件加速渲染。 QCustomPlot使用OpenGL改善绘图性能 QCustomPlot采用了诸如自适应采样和文本对象缓存之类的各种技术,从而减少重新绘制所需的时间,在绘制简单的线条图形时,不管是否开启OpenGL硬件加速,对绘制的性能没有太大的影响,只有在绘制大面积的图形或填充复杂图形时,才能体现OpenGL的优势。 下面就让我们进入正题吧,如何在

阿龙的思考 2257

向MFC嵌入OpenGL

本人上计算机图形学课时要做的大作业是基于MFC框架用OpenGL实现一些功能。但是我一开始并不知道怎么在MFC中加入OpenGL模块。于是我在网上找了半天终于找到一篇文章,阅读之后受益匪浅。今天我准备把这篇文章翻译出来。       原文地址:Setting Up OpenGL in an MFC Control       翻译如下:

HMTA的博客 3673
上一篇: 一个简单的基于OpenGL的Lua的游戏引擎的实例
YellowBug
博客等级 码龄18年 6粉丝 8原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值