首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用SharpGL三维建模技术生成3D井眼轨迹图

一、开源SharpGL项目介绍 SharpGL 可以让你在 Windows Forms 或者 WPF 应用中轻松的使用 OpenGL 开发图形应用。...SharpGL将所有的函数和一组丰富的对象,以及高级功能的对象集合放到一个包装器中,你可以使用SharpGL执行opengl绘图。...SharpGL背后的原理是OpenGL in .NET, SharpGL并不是一个需要重新学习的新框架,它只不过是封装的OpenGL。 为什么不直接使用OpenGL,而是使用SharpGL呢?...最后一个选择使用SharpGL的原因是,在OpenGL中大量的很痛苦的重复的工作如加载信息等,但是这些工作在.NET中是非常容易处理的。...为什么要围绕原点?因为这样才能在下文所述的WorldSpace里"正常地"旋转、缩放和平移模型。 世界坐标系 它是一个特殊的坐标系,它建立了描述其他坐标系所需要的参考系。

4.1K50

C# winform用sharpGL(OpenGl)解析读取3D模型obj

至于其他什么旋转移动的你们自己加起来应该很容易的,因为我有看过c#下别人写的obj模型解析的代码项目,加了很多东西,我都找不到自己要用的代码在哪里,而我只需要读取解析obj模型这块代码而已,气的我自己写了个类自己解析...,所以我怕我代码写多了, 你们反而看起来不好理解hhhhhh 在c++下用OpenGL解析的话可以看我其他博客 运行环境:vs2017,需要配置的库为:sharpGL 一.读取3D模型  在3d图形处理中...由于多边形都可以划分为三角形,而三角形是图形处理器中都支持的基本图元,因此使用得较多的就是三角形网格来建模。例如下面的图(来自:What is a mesh in OpenGL?)...o 引入一个新的object     v 表示顶点位置     vt 表示顶点纹理坐标     vn 表示顶点法向量     f 表示一个面,面使用1/2/8这样格式,表示顶点位置/纹理坐标/法向量的索引...args) { // 创建一个GL对象 SharpGL.OpenGL gl = this.openGLControl1.OpenGL;

2.5K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    关于MFC与OpenGL结合绘图区域用鼠标来控制图形的移动总结

    我就想着用MFC界面来开发,但是呢MFC对话框 或者单文档跟OpenGL结合的绘图区域,添加了鼠标移动的消息响应函数,可是鼠标移动的坐标打印告诉我,两者结合之后 不仅左上角坐标不是(0,0)右下角也不是常规的长宽坐标...  反正移动起来坐标跳动的非常的不规律,一会一百多,一会就几千,可是界面定义的长宽只有几百而已,这就是一个非常纠结的地方了,在MFC下与OpenGL结合 我不能通过鼠标移动的坐标来控制模型的移动了,...  我也找了很多的资料,和示例程序 都是键盘控制移动,鼠标控制图形旋转   都没有鼠标直接拖动图形移动的实现,这让我觉得可能是MFC太老了,都没有人用来搞与OpengL结合的开发了,所以就没有人研究这个两者的底层结合出现的问题...没办法,项目需要界面,那我只能重新学习c#或者是QT来制作这个界面了,最后花了一天多学了c#的winform界面开发,opengl是不可以直接在c#中使用的,只能用一些大牛的对接 比如sharpGL ...不过语法都差不多  c#中的鼠标控制良好 可以非常轻松的实现图形的拖动旋转一系列操作 若有兴趣交流分享技术,可关注本人公众号,里面会不定期的分享各种编程教程,和共享源码,诸如研究分享关于c/c++,python

    1.3K20

    OpenGL开发库的详细介绍zz

    所有OpenGL函数采用了以下格式 参数个数>参数类型> 库前缀有gl、glu、aux、glut、wgl、glx、agl等等,分别表示该函数属于OpenGL那个开发库等...,从函数名后面中还可以看出需要多少个参数以及参数的类型。...据类型的参数,因此派生出来的函数原形多达300多个。核心库中的函数主要可以分为以下几类函数。 绘制基本几何图元的函数。...纹理映射函数,主要有一维纹理函数glTexImage1D()、二维纹理函数glTexImage2D()、 设置纹理参数、纹理环境和纹理坐标的函数glTexParameter*()、glTexEnv*()...在跨平台的编程实例和演示中,aux很大程度上已经被glut库取代。OpenGL中的辅助库不能在所有的OpenGL平台上运行。 辅助库函数主要包括以下几类。

    1.9K30

    OpenGL API 简介

    参数个数>参数类型> 库前缀有 gl、glu、aux、glut、wgl、glx、agl 等等,分别表示该函数属于openGL 的哪个开发库,从函数名后面中还可以看出需要多少个参数以及参数的类型...纹理映射函数: 主要有一维纹理函数 glTexImage1D()、二维纹理函数glTexImage2D()、设置纹理参数、纹理环境和纹理坐标的函数glTexParameter*()、glTexEnv*...在跨平台的编程实例和演示中,aux 很大程度上已经被 glut 库取代。OpenGL 中的辅助库不能在所有的 OpenGL 平台上运行。...从当前目标纹理调色板得到颜色表数据 glGetColorTableParameterfvEXT、glGetColorTableParameterivEXT 从颜色表中得到调色板参数 glGetError...,glTexParameteriv 设置纹理参数 glTexSubImage1D 定义一个存在的一维纹理图像的一部分,但不能定义新的纹理 glTexSubImage2D 定义一个存在的二维纹理图像的一部分

    2.3K41

    Unity3D学习笔记3——Unity Shader的初步使用

    所以这篇文章,我们就初步学习下在Unity中使用Shader。 2. 详论 2.1. 创建材质 在上一章中,材质、以及材质相关的资源是在Unity3D编辑器中创建,在C#脚本中直接引用的。...这里为了学习使用Shader,我们使用自定义的Shader,可以在C#脚本中创建材质。...在像OpenGL这样的图形接口中,通常是以函数的形式进行调用的,Unity3d将其放在Shader里面,也有一定的道理。 这里的渲染状态设置成将背面裁剪掉: Cull Back 2.2.3.3....通道(Pass) 在Pass语义块中,才是像OpenGL/DirectX中使用的Shader。...OpenGL使用的着色器语言叫做GLSL,DirectX使用的着色器语言叫做HLSL,Unity3D则推荐使用Cg语言,这是一种类C语言,与HLSL非常相似。

    4.2K20

    基础渲染系列(二)——着色器

    例如,适用于Windows的Direct3D,适用于Mac的OpenGL,适用于手机的OpenGL ES等。这里我们不处理单个编译器,而是多个。 最终使用哪个编译器取决于你的目标。...由于顶点输出应与片段输入匹配,因此如果可以在一个地方定义参数列表,将非常方便。幸运的是,我们可以做到。 我们可以定义数据结构,它只是变量的集合。类似于C#中的结构,但语法略有不同。...正如预期的那样,它包裹着它,但是在两极附近它会显得非常不稳定。为什么会这样呢? 发生纹理变形是因为插值在三角形之间是线性的。Unity球体在极点附近只有几个三角形,其中UV坐标变形最大。...TRANSFORM_TEX宏使用此技巧。如果你好奇的话,可以看看它的定义。 ? 宏启用了各种巧妙的技巧,但也可能导致难以理解的代码和非常讨厌的错误。这就是为什么C#没有宏的原因。...我们将在以后的教程中创建自己的宏。 5 纹理设置 到目前为止,我经使用的是默认的纹理导入设置。让我们看一下其中的一些选项,看看它们的作用。 ?

    4K20

    Android OpenGL开发实践 - GLSurfaceView对摄像头数据的再处理

    如果一些参数设置的不恰当,后面隐藏的SurfaceView还有可能会露出来。...要注意的是,此方法只能在生成该纹理的OpenGL线程中调用,所以这个地方通过GLSurfaceView的queueEvent方法将该调用放入GL线程队列中执行。...除此之外,external OES的纹理和Sampler2D在使用时没有差别。 有了顶点着色器和片段着色器程序,我们怎么把它们加在OpenGL渲染管线中运行起来呢?...下面还有一个很重要的问题:我们怎么把前面得到的相机纹理和纹理坐标变换矩阵传递给OpenGL ES程序呢?下面我们就来看看如何在OpenGL ES程序中传递各种不同类型的参数。...纹理参数传递时,需要先绑定某个纹理单元,将纹理输入绑定到纹理单元的目标对象上,然后调用glUniform1i设置其参数为该纹理单元。 至此,我们的着色器程序已准备好,所有参数也已设置完毕。

    13.1K124

    新知 | 腾讯云视立方特效引擎优秀实践——终端篇

    Flutter和Unity的平台层开发语言分别是dart和C#,它们和原生层之间的消息通道只能传递基础数据类型。但在实际的开发过程中,特效引擎需要传递的数据结构非常复杂。...但在具体实现过程中,Flutter为了避免阻塞UI界面,它和原生层的消息发送及响应都使用异步的方法,这也导致纹理经过通信层传递到原生层时,传输数据线程会发生变化,而特效处理需要保持在OpenGL线程,所以纹理在...那么如何才能实现纹理在Flutter和原生层之间不跨线程进行传输呢?最直接的方法便是绕过传输通道,直接打通原生层进行传输。...如果能够创建一个可供两个平台使用的Pixelbuffer,让它们共用一块内存,那么就可以同时渲染Metal和OpenGL纹理。所以腾讯特效SDK在Unity版本中创建了Pixelbuffer的设置。...第一步,我们需要设置授权并初始化短视频SDK和腾讯特效SDK,之后为短视频SDK设置视频回调参数及特效方式,然后在视频回调处理中调用特效SDK进行特效处理。

    2K40

    Android开发笔记(一百五十六)通过渲染纹理展示地球仪

    在OpenGL体系之中,纹理坐标又称UV坐标,通过两个浮点数组合来设置一个点的纹理坐标(U,V),其中U表示横轴,V表示纵轴。...中存放了创建的Texture ID gl.glGenTextures(1, textures, 0); //通知OpenGL库使用这个Texture gl.glBindTexture...此时就要指定下述的纹理参数设置了: //用来渲染的Texture可能比要渲染的区域大或者小,所以需要设置Texture需要放大或是缩小时OpenGL的模式 //GL_TEXTURE_MAG_FILTER...,表示后续的纹理渲染动作将使用该位图包裹三维物体,绑定位图材质的代码如下所示: // 将Bitmap资源和Texture绑定起来,即指定一个具体的材质 GLUtils.texImage2D...话说上面竟然是三维动画,其实OpenGL绘制三维动画很简单,由于GLSurfaceView的渲染器会持续调用onDrawFrame函数,因此只要在该函数中设置渐变的变换数值,即可轻松实现以下动画效果:

    1K30

    .NET 8.0 和 OpenGL 创建一个简易的渲染器

    在学习过程中,我发现使用Unity Shader编写着色器非常方便,它很好地封装了渲染概念中的Pipeline、Pass等要点。...项目搭建和所需依赖 Silk.NET.OpenGL - OpenGL 的 C# 包装器。...Hexa.NET.ImGui、Hexa.NET.ImGuizmo - ImGui 的 C# 包装器。 项目架构 TrContext.cs - 统一管理使用的 GL 和 GL 扩展的上下文。...TrBuffer.cs - 使用 OpenGL 创建并维护内存,可设置内存优先级。 TrTransform.cs - 简易的矩阵变换类,支持平移、缩放、旋转。 TrCamera.cs - 相机类。...项目预览 初始界面 窗体菜单 场景模型拾取和 Transform 漫反射场景 各类纹理渲染 Shadertoy 网站的 shader 渲染,我抄了几个Shadertoy BETA(https://www.shadertoy.com

    27810

    001计算机图形学vs2015配置openGL及第一个opengl程序

    中gl,glu,glut的区别 OpenGL中的gl库是核心库,glu是实用库,glut是实用工具库; gl是核心,glu是对gl的部分封装,glut是OpenGL的跨平台工具库,gl中包含了最基本的...OpenGL使用状态方案的原因是渲染是一个非常复杂的任务,不能仅仅通过一个函数接受几个参数来完成(一个合理设计的函数是不会接受大量的参数的)。...这也是为什么多数的渲染操作配置都是通过在OpenGL状态机中设置flag标志变量和值来完成,而且渲染回调本身通常也被局限于几个参数,参数解决需要绘制的定点数量和他们的偏移量。...上面的函数设置了当帧缓存(帧缓存后面还会介绍)清空后要使用的颜色值。颜色值有四个通道(RGBA),使用单位化的值0.0-1.0来表示。...GL_MODELVIEW,这个是对模型视景的操作,接下来的语句描绘一个以模型为基础的适应,这样来设置参数,接下来用到的就是像gluLookAt()这样的函数; 若是GL_TEXTURE,就是对纹理相关进行操作

    1.4K30

    OpenGL+Visual Studio 2010开发环境搭建

    OpenGL的图形库函数封装在动态链接库OpenGL32.DLL中,开发基于OpenGL的应用程序 OpenGL主要由以下库函数组成: OpenGL核心库:包含115个最基本的命令函数,它们都是以”...OpenGL辅助库函数:OpenGL Utility Toolkit (GLUT)包含31个函数,以”aux“作为前缀,但它们不能在所有的OpenGL平台上使用。...进行初始化,这个函数必须在其它的GLUT使用之前调用一次 glutInit(&argc, (char**)argv); // 设置显示方式,其中GLUT_RGB表示使用RGB颜色,GLUT_SINGLE...表示使用单缓冲 glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); // 设置窗口大小 glutInitWindowSize(500, 500...); // 设置窗口在屏幕中的位置 glutInitWindowPosition(300, 300); // 根据前面设置的信息创建窗口 glutCreateWindow

    1.4K30

    opengl入门教程pdf

    .dll and query wglGetProcAddress' address HMODULE hDll = LoadLibrary("opengl32.dll"); WGLGETPROCADDRESS...除此之外,有些OpenGL函数最后带一个字母v,表示函数参数可用一个指针指向一个向量(或数组)来替代一系列单个参数值。下面两种格式都表示设置当前颜色为红色,二者等价。...线 在OpenGL中,线代表线段(Line Segment),不是数学意义上的那种沿轴两个方向无限延伸的线。这里的线由一系列顶点顺次连结而成,有闭合和不闭合两种。...纹理映射的最大尺寸依赖于OpenGL,但它至少必须是使用64x64(若带边界为66x66),若width和height设置为0,则纹理映射有效地关闭。   ...纹理控制函数 OpenGL中的纹理控制函数如下: void glTexParameter{if}[v](GLenum target,GLenum pname,TYPE param); 第一个参数target

    3.2K31

    Android OpenGL ES 纹理

    我可以很明确的说,不会的。让我先买个关子,原因后面再说。 有了坐标数据,接下来是干什么呢?如果你看了前面几篇文章就不陌生了。 将数据填充到Buffer中,并传递到GL程序中。...纹理参数 创建纹理之后,我们继续设置纹理的参数。...// 设置纹理参数 GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_LINEAR...我这里只说一下最终的处理位置,我们只需将Bitmap加载到纹理的时候,进行纹理缩放处理即可。...纹理处理的方式也并不难,相信一路走下来的同学都有所体会 这也进一步说明OpenGL ES也没有很难,只是我们开始对它的使用方式不熟悉,因为它与我们正常的展示一张图片的方式完全不同,但明白它的处理方式之后

    1.2K10

    万字长文详解如何用Python玩转OpenGL | CSDN 博文精选

    OpenGL 不是一个独立的平台,因此,它需要借助于一种编程语言才能被使用。C / C++ / Python / Java 都可以很好支持 OpengGL,我当然习惯性选择 Python 语言。...glTexImage2D()、设置纹理参数、纹理环境和纹理坐标的函数glTexParameter*()、glTexEnv*()和glTetCoord*() 特殊效果函数: 融合函数glBlendFunc...初始化 glut 库的时候,我们一般都要用 glutInitDisplayMode() 来设置初始的显示模式,它的参数可以是下表中参数的组合。...使用双缓存窗口,可以避免重绘时产生抖动的感觉。我一般选择 GLUT_DOUBLE | GLUT_ALPHA | GLUT_DEPTH 作为参数来设置初始的显示模式。...这也是为什么要在渲染过程中,在每份绘制代码之中会有 glBindbuffer、glEnableVertexAttribArray、glVertexAttribPointer。

    9.5K22

    【Android 音视频开发打怪升级:OpenGL渲染视频画面篇】一、初步了解OpenGL ES

    一 简介 提到OpenGL,想必很多人都会说,我知道这个东西,可以用来渲染2D画面和3D模型,同时又会说,OpenGL很难、很高级,不知道怎么用。 1、为什么OpenGL“感觉很难”?...3、 OpenGL ES版本 目前主要版本有1.0/1.1/2.0/3.0/3.1 1.0:Android 1.0和更高的版本支持这个API规范 2.0:不兼容 OpenGL ES 1.x。...三角形 可能有人就有疑问了:绘制三角形的时候只是直接设置了像素点的颜色值,并没有用到纹理,纹理到底有什么用呢? 接下来,就用纹理来显示一张图片,看看纹理到底怎么使用。...为什么说是一个纹理单元?...一般使用这两个模式:GL_NEAREST(邻近过滤)、GL_LINEAR(线性过滤) 当设置为GL_NEAREST的时候,OpenGL会选择中心点最接近纹理坐标的那个像素。

    2K51
    领券