在OSX上的C中的OpenGL窗口上绘制三角形的裸骨架是什么?我已经阅读了Nehe的教程并试图让它工作,但CreateGLWindow似乎与win32毫无希望地联系在一起.
我想坚持只是opengl和过剩等等.我最终将把它包装在计划中,但我希望事先在c级更加坚定.
这是我到目前为止所拥有的:
#include <OpenGL/gl.h>// Header File For The OpenGL32 Library
#include <OpenGL/glu.h>// Header File For The GLu32 Library
#include <GLUT/glut.h>// Header File For The GLut Library
#define kWindowWidth 400;
#define kWindowHeight 300;
HGLRC hRC=NULL;// Permanent Rendering Context
HDC hDC=NULL;// Private GDI Device Context
HWND hWnd=NULL;// Holds Our Window Handle
HINSTANCE hInstance;// Holds The Instance Of The Application
LRESULTCALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);// Declaration For WndProc
boolkeys[256];// Array Used For The Keyboard Routine
boolactive=TRUE;// Window Active Flag Set To TRUE …Run Code Online (Sandbox Code Playgroud) 我想在我的Ubuntu机器上开发OpenGL ES 2.0应用程序.我找不到任何支持GLES 2.0的库/模拟器.有什么建议?
我一直在网上阅读很多思考,COLLADA是一种死文件格式?因为应用程序没有更新它们的支持等.这是真的吗?它最初被设计成一种几乎可以独立应用的格式,所以我的问题分为两部分.这是死格式吗?如果是这样,目前可接受的格式是什么才能最大化应用程序间开发(以及与OpenGL应用程序一起使用)?
我有一个绑定到简单四边形的OpenGL纹理.
我的问题是:我的纹理是128x128像素的图像.我只在该图像上填充大约100x60像素,其他像素是透明的.我把它保存在.png文件中.当我画画时,绑定纹理的透明部分是白色的.
假设我有背景.当我在这个背景上绘制这个新的四边形时,我看不到透过纹理的透明部分.
有什么建议?
码:
// Init code...
gl.glEnable(gl.GL_TEXTURE_2D);
gl.glDisable(gl.GL_DITHER);
gl.glDisable(gl.GL_LIGHTING);
gl.glDisable(gl.GL_DEPTH_TEST);
gl.glTexEnvi(gl.GL_TEXTURE_ENV, gl.GL_TEXTURE_ENV_MODE, gl.GL_MODULATE);
// Drawing code...
gl.glBegin(gl.GL_QUADS);
gl.glTexCoord2d(0.0, 0.0);
gl.glVertex3f(0.0f, 0.0f, 0.0f);
gl.glTexCoord2d(1.0, 0.0);
gl.glVertex3f(1.0f, 0.0f, 0.0f);
gl.glTexCoord2d(1.0, 1.0);
gl.glVertex3f(1.0f, 1.0f, 0.0f);
gl.glTexCoord2d(0.0, 1.0);
gl.glVertex3f(0.0f, 1.0f, 0.0f);
gl.glEnd();
Run Code Online (Sandbox Code Playgroud)
我已经尝试了几乎所有的东西,从启用混合到更改到GL_REPLACE,但是我无法让它工作.
编辑:
// Texture. Have tested both gl.GL_RGBA and gl.GL_RGB8.
gl.glTexImage2D(gl.GL_TEXTURE_2D, 0, (int)gl.GL_RGBA, imgWidth, imgHeight,
0, gl.GL_BGR_EXT, gl.GL_UNSIGNED_BYTE, bitmapdata.Scan0);
Run Code Online (Sandbox Code Playgroud) 考虑到我用GL_LINES画线,我是否可以在片段着色器中添加线条粗细?我看到的大多数示例似乎只访问片段着色器中基元内的纹素,并且线条粗细着色器需要写入线基元外部的纹素以获得厚度.但是,如果可能的话,一个非常小的,基本的例子就会很棒.
我今天早上将mac os x 10.6.8升级到10.9.除了带有OpenGL Glut API的Xcode 5之外,一切都很顺利.每当我运行涉及过剩功能的程序时,我都会收到30个弃用警告,例如:
'gluErrorString' is deprecated: first deprecated in OS X 10.9.
'glutBitmapCharacter' is deprecated: first deprecated in OS X 10.9.
'glutSwapBuffers' is deprecated: first deprecated in OS X 10.9.
'glutDisplayFunc' is deprecated: first deprecated in OS X 10.9.
'glutIdelFunc' is deprecated: first deprecated in OS X 10.9.
...
Run Code Online (Sandbox Code Playgroud) 有没有办法在规划阶段根据游戏/应用程序的预期复杂性预先决定是否在SurfaceView中使用常规Canvas绘图或使用OpenGL?
我一直在玩Canvas并且只需要2D移动,而在一部相当新的手机上,我得到了相当不错的性能,其中有一堆原始对象和一些在固定背景屏幕上运行的位图.
可以公平地说,如果我要绘制背景图像并增加移动和绘制对象的数量,我应该直接使用OpenGL吗?
我应该有Glew和Glut的最新版本,所以不应该是问题.一切都应该链接,我正在使用MS visual studio 2010.我的程序编译但是当我到glCreateShader(GL_FRAGMENT_SHADER)它显示错误:"0xC0000005:访问冲突."
我的节目:
#include <GL\glew.h>
#include <GL\glut.h>
#include <stdio.h>
#include <stdlib.h>
GLuint program;
static char* readShaderSource(const char * shaderFile)
{
FILE* fp = fopen(shaderFile, "r");
char* buf;
long size;
if (fp == NULL) return NULL;
fseek(fp, 0L, SEEK_END);//go to end
size = ftell(fp); //get size
fseek(fp, 0L, SEEK_SET);//go to begining
buf = (char*) malloc((size +1) * sizeof(char));
fread(buf, 1, size, fp);
buf[size] = NULL;
fclose(fp);
return buf;
}
static void initShader(const GLchar * fsFile)
{
GLint status;
GLchar …Run Code Online (Sandbox Code Playgroud) 我正在使用opengl/egl为Android开发.我的应用程序需要第二个上下文来从第二个线程加载纹理.
我的代码在android 2.3上工作正常,但是当我在4.0.3 android设备或模拟器上尝试代码时,eglMakeCurrent()在EGL_BAD_MATCH中失败.
第二个上下文和它的像素缓冲区的初始化也都可以正常工作,所以我不知道从哪里开始寻找这个错误.
这是初始化代码:
ANativeWindow *window = (ANativeWindow*)displaySurface;
EGLint dummy, format;
display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
eglInitialize(display, 0, 0);
EGLint contextAttribs[] =
{
EGL_CONTEXT_CLIENT_VERSION, 2, EGL_NONE
};
const EGLint configAttribs[] =
{
EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
EGL_BLUE_SIZE, 8,
EGL_GREEN_SIZE, 8,
EGL_RED_SIZE, 8,
EGL_ALPHA_SIZE, 8,
EGL_BUFFER_SIZE, 32,
EGL_DEPTH_SIZE, 24,
EGL_NONE
};
EGLint numConfigs;
EGLConfig config;
eglChooseConfig(display, configAttribs, &config, 1, &numConfigs);
eglGetConfigAttrib(display, config, EGL_NATIVE_VISUAL_ID, &format);
ANativeWindow_setBuffersGeometry(window, 0, 0, format);
surface = eglCreateWindowSurface(display, config, window, NULL);
if(surface == NULL)
Trace("error creating window surface: …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种在WebGL中绘制更好质量(任意)文本的方法.目前我在2D画布上使用位图字体渲染并将它们放入WebGL上下文中.
此处描述了此方法http://delphic.me.uk/webgltext.html
这是我现在知道的在WebGL中绘制任意unicode文本的唯一解决方案.这种方法的问题是这些是位图字体,并且在较小的字体大小上看起来很块.我大多使用18的字体大小,与桌面质量字体相比,结果相当块.
我知道threeJS有一个字体库可以生成更好看的文本,但是我不想使用threeJS,因为我有自己的包装器,它可以正常工作,我不需要增加额外的三个开销.
那么如何在WebGL中创建更高质量的文本呢?有没有方法在Javascript中提取文本形状以提高质量?