当前位置:首页 » 编程语言 » c语言opengl画点
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言opengl画点

发布时间: 2022-07-01 20:50:17

⑴ 老师要求做c语言的游戏(类似贪吃蛇),我用的是vc++,graphics.h一直有问题,所以决定用opengl。

openGL绘图不知道,你可以把问题简单化,只要搞懂在任意像素点能画一个点,
写一个类似paint(int x, int y, int colour)函数,问题就都解决了。

画矩形无非就是两层for循环,调用画点的函数一个点一个点,画上去,里面for循环画一横行,然后外面for循环把坐标移到下一行。

擦除一个矩形,就是在那个矩形上重画一下背景色。

蛇移动,更简单,擦掉蛇尾矩形,在蛇前进方向上画一个矩形。两个步骤,视觉上就是蛇在移动。

定义一个游戏区域大小的二维数组, 利用数组的下标保存蛇的坐标点、边框坐标、和要吃的那个东西坐标。

每画一个蛇头,判断一下所在坐标,做相应处理,就OK了。

⑵ 如何画一个实心点,不用MFC, 只用C/C++

你可以用OpenGL,C语言实现的底层图形渲染库,很多图形库皆基于此。或者直接操作图形输出设备硬件。

⑶ OpenGL如何实现B样条曲线和曲面的绘制(C语言)

你说的是计算机图形学的课程设计吧,我有C编写的代码,可以运行,是画B样条曲线和曲面的,我发到你邮箱里了,你参考一下吧。

⑷ OpenGL是一门新语言吗

它不是一门新的语言,但是你要想使用它需要学习里面函数的用法。

它其实是一个库,提供的是接口。
可以用visual studio 2005编辑,也可以用dev编辑,也就是说它不依赖于编程平台。

使用的时候设置好环境,引入这个库,然后用它提供的函数(接口)就行~

虽然OpenGL是给C语言写的,但如果希望使用在其它语言中可以使用绑定,同样可以用于java等其它语言。
比如在java中就有被大家认可并注意的JOGL,它是Java对于OpenGl的绑定(Java Bindings for OpenGL)。理由是它得到Sun(Java的创建者)和SGI(OpenGL的创建者)的支持。

OpenGL官方网页中列出了用于Java、Fortran 90、Perl、Pike、Python、Ada和Visual Basic的多个绑定。

⑸ 如何在Android上使用OpenGL ES 2.0绘制点

OpenGLES是一个让人崩溃的东西。在Andorid手机上做3D还就得用它。把我记的一些笔记分享在这里吧:AndroidOpenGLES简介20011-6-3Android系统使用OpenGL的标准接口来支持3D图形功能,android3D图形系统也分为java框架和本地代码两部分。本地代码主要实现的OpenGL接口的库,在Java框架层,javax.microedition.khronos.opengles是java标准的OpenGL包,android.opengl包提供了OpenGL系统和AndroidGUI系统之间的联系。Android的本地代码位于frameworks/base/opengl下,JNI代码位于frameworks/base/core/com_google_android_gles_jni_GLImpl.cpp和frameworks/base/core/com_google_android_gles_jni_EGLImpl.cpp,java类位于opengl/java/javax/microedition/khronos下本地测试代码位于frameworks/base/opengl/tests。包括angeles、fillrate等14个测试代码,这些代码都可以通过终端进行本地调用测试(模拟器中使用adbshell)。OpenGLES1.x固定管线操作,支持glVertexPointer()等函数,不支持GLSL。头文件在ndk的GLES目录下,库文件是libGLESv1_CM.so。OpenGLES2.x可编程管线操作,不兼容1.x,不支持固定管线操作,例如glVertexPointer()等函数。支持GLSL(还必须用这个来编程)。头文件在ndk的GLES2目录下,库文件是libGLESv2.so。OpenGLES学习2011-6-30OpenGL定义了自己的数据类型。应该坚持使用这些OpenGL的数据类型,从而保证可移植性和效率。OpenGLES目前不支持64位数据类型。OpenGLES只支持三边形。OpenGLES只支持gl开头的函数,glu库都不支持。OpenGLES从OpenGL中删除的功能:1.glBegin/glEnd2.glArrayElement3.显示列表4.求值器5.索引色模式6.自定义裁剪平面7.glRect8.图像处理(这个一般显卡也没有,FireGL/Quadro显卡有)9.反馈缓冲10.选择缓冲11.累积缓冲12.边界标志13.glPolygonMode14.GL_QUADS,GL_QUAD_STRIP,GL_POLYGON15.glPushAttrib,glPopAttrib,glPushClientAttrib,glPopClientAttrib16.TEXTURE_1D、TEXTURE_3D、TEXTURE_RECT、TEXTURE_CUBE_MAP17.GL_COMBINE18.自动纹理坐标生成19.纹理边界20.GL_CLAMP、GL_CLAMP_TO_BORDER21.消失纹理代表22.纹理LOD限定23.纹理偏好限定24.纹理自动压缩、解压缩25.glDrawPixels,glPixelTransfer,glPixelZoom26.glReadBuffer,glDrawBuffer,glCopyPixelsOpenGLES2.02011-10-92.0和1.1不兼容。-2.0使用的头文件是ndk的include目录下的GLES2目录,有gl2.h,gl2ext.h,gl2platform.h,而1.1使用的是GLES目录。-2.0使用的库文件是ndk的lib目录下的libGLESv2.so,而1.1使用的是libGLESv1_CM.so。-2.0中取消了很多1.1函数,例如glMatrixModel和glLoadIdentity等。OpenGL着色语言(GLSL――OpenGLShadingLanguage)-使用2.0,必须学此语言。因为很多1.1的函数都被取消了。san-angelesNDKOpenGLES1.1的例子程序2012-3-8SanAngeles,查维基网络,是一个虚构的未来概念城市,位于南加州。常在电影中出现,来源自LosAngeles和SanDiego.该程序的演示效果是,观察一个宏伟的城市,地面是镜面有建筑倒影,城市中有飞船飞过。前后有5、6个观察点,而且镜头在每个观察点不停的移动。这个例子,用NDK(C++)调用OpenGLES1.1来绘制了SanAngeles这个城市。基本上全部使用了NDK,Java程序只有1个。用vc2005演示一下,目的通过跟踪代码了解一些细节。方法是:-将jni下所有的.h文件,以及demo.c,app-win32.c复制出来,放在一个专门的目录下,然后改造成用OpenGL的而不是ES的。(或者干脆删除大段的绘制代码,保证编译通过)首先分析Java代码-DemoActivity.java,这是唯一的Java文件,它主要需要下列4个jni的接口:-();//初始化-(intw,inth);-();//绘制1帧-();其次分析C++代码app-android.c-首先,调用了importGLInit(),动态导入OpenGL的库。-其次,调用了appInit(),在内存中建立了平台无关的3D对象集合。建立方法是用一个数组,用类似画圆拔高的方式产生诸多三角形。-然后,在每个时钟周期中调用appRender(),细节是:-prepareFrame(width,height);//准备OpenGLES绘制框架。其实就是清空颜色和深度缓冲,重置投影和模型矩阵。-camTrack();//算好在当前时钟周期,镜头的位置、朝向及焦距等。然后调用gluLookAt来实现。-configureLightAndMaterial();//设置光源和材质-drawModels(-1);//先绘制倒影(其实就是将所有模型z轴倒过来画)-第一个循环,是画精致的物体-第二个循环,是画运动的物体-drawGroundPlane();//再绘制镜子一般的地面。在绘制前取消光照,打开混合,然后绘制。绘制后还原状态。-drawModels(1);//再绘制所有模型-drawFadeQuad();//最后绘制淡出框,用融合的方式画一个遮住整个视口的2D框,融合系数和时间相关。

⑹ C语言我用OpenGL画了个圆,如何定义圆心坐标

opengl应该有自带的画圆或椭圆函数,为什么要自己描点?
你把x和y的值都加上一个数字,或者x或y乘除一个数字试试

⑺ C语言如何用OpenGL

OpenGL就是基于C语言的,只需要下载OpenGL的SDK库安装即可,在编写源码时:
1、添加头文件glut.h。
注意glut.h文件中已经包含gl.h,glu.h在实际编译中可以只加入头文件glut.h,很多相关的例子都是这样的,但是在mingwstudio上编译发现,在glut.h前还是需要加入glu.h, gl.h.如:
#include <gl/gl.h>
#include <gl/glu.h>
#include <gl/glut.h>
2、在工程中添加OpenGL的库,有关命令行加入,glu32 opengl32 glut32库就可以编译了。